如何将OpenCV中的Mat转换为Caffe格式

3

我正在使用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.

在调整大小后,我将把它转换为caffe类型,例如函数

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

然而,当我调用该函数时,我不知道self是什么。你能帮我解决这个问题吗?

谢谢你的帮助!


user8430,你找到这个问题的解决方案了吗?我也遇到了这个问题。 - Carlos Porta
我找到了。但是,我把它删掉了。很难再找到它。对不起。然而,数组转换为数据是一个好的解决方案,就像我记得的那样。 - Jame
1个回答

4

它在Python中支持吗?我正在使用Python完成我的任务。 - Jame
1
所以,作为我的情况,我要使用 resized_img= resized_img.swapaxes(0, 2).swapaxes(1, 2) datum_image = caffe.io.array_to_datum(resized_img, 0) - Jame

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接