2015-06-13 60 views
2

我正在使用opencv從我的相機中裁剪臉部。然後我用咖啡來預測這個圖像屬於男性還是女性。我有一個從靜態圖像加載圖像的原始代碼。不過,我想從相機中使用它的圖像。這是在CAFFE原始代碼現在如何將mat從opencv轉換爲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後,我會它CONVER到CAFFE類型如功能

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

但是,當我調用該函數。我不知道什麼是自我。你能幫我解決嗎?

謝謝你的幫忙!

+0

user8430,你有沒有發現這個問題的解決方案?我也有這個問題。 – Caaarlos

+0

我找到了。但是,我刪除了它。很難再找到它。抱歉。然而,數組到數據是好的解決方案,因爲我remmember – Jame

回答

4

您可以在caffe.io中使用CVMatToDatum函數。這裏更多的信息:https://github.com/BVLC/caffe/blob/master/src/caffe/util/io.cpp

編輯:我認爲你可以使用array_to_datumhttps://github.com/BVLC/caffe/blob/master/python/caffe/io.py, 儘管它可能有必要轉換墊ndarray第一

+0

是否支持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