使用OpenCV时如何在NN中使用keras Lambda

问题描述

我有一个功能

def preprocess(image):
  image = cv2.cvtColor(image,cv2.COLOR_RGB2YUV)
  image = cv2.GaussianBlur(image,(3,3),0)
  image = cv2.resize(image,(200,66))
  return image

我想在这样的NN的Lambda层中使用此功能

  model=Sequential()

  model.add(Lambda(preprocess,input_shape=(160,320,3)))
  #model.add(Lambda(lambda x: (x / 255.0) - 0.5,3)))
  model.add(Lambda(lambda x: (x / 255.0) - 0.5))
  model.add(Cropping2D(cropping=((60,25),(0,0))))

但是我得到了错误

model = nvidia_model()
print(model.summary())

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-11-9f6554917809> in <module>()
----> 1 model = nvidia_model()
      2 print(model.summary())

6 frames
<ipython-input-9-5e5ec9bc70c2> in preprocess(image)
      1 def preprocess(image):
      2   
----> 3   image = cv2.cvtColor(image,cv2.COLOR_RGB2YUV)
      4   image = cv2.GaussianBlur(image,0)
      5   image = cv2.resize(image,66))

TypeError: Expected Ptr<cv::UMat> for argument '%s'

如何将此函数用作NN层? (请注意,仅使用lambda x:(x / 255.0)效果很好。

注意:我希望从外部进行此操作。 (因为我已经做过,所以可以正常工作,但是现在我正在尝试在内部进行操作)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)