如何将mat从opencv转换为caffe格式

时间:2015-06-13 04:20:42

标签: python python-2.7 opencv caffe

我正在使用opencv从相机中裁剪脸部。然后我用caffe预测图像属于男性或女性。我有一个原始代码从静态图像加载图像。但是,我想使用相机的图像。这是caffe中的原始代码

    model = caffe.Classifier(...)
    image_path = './static_image.jpg'
    input_image = caffe.io.load_image(image_path )
    prediction =model.predict([input_image]) 

现在,我将使用opencv来捕获帧并调用预测方法

  val, image = cap.read()    
  image = cv2.resize(image, (320,240))
  gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
  faces = face_cascade.detectMultiScale(gray, 1.3, 5, minSize=(30,30))
  for f in faces:
      x,y,w,h = f
      cv2.rectangle(image, (x,y), (x+w,y+h), (0,255,255))        
       face_image = gray[y:y+h, x:x+w]
       resized_img = cv2.resize(face_image, (45,45))/255.

在resized_image之后,我会将它转换为caffe类型,例如函数

def format_frame(self,frame):
    img = frame.astype(np.float32)/255.
    img = img[...,::-1]
    return img

但是,当我调用该功能时。我不知道自己是什么。你能帮我解决一下吗?

谢谢你的帮助!

1 个答案:

答案 0 :(得分:4)

您可以在caffe.io中使用 CVMatToDatum 功能。更多信息:https://github.com/BVLC/caffe/blob/master/src/caffe/util/io.cpp

编辑:我认为您可以使用 array_to_datum https://github.com/BVLC/caffe/blob/master/python/caffe/io.py, 虽然可能有必要先将Mat转换为ndarray