2017-09-08 116 views
0

所以,我不斷收到一個 「斷言失敗」 的錯誤,如果我離開,CV2(cv2.imwrite) - Python會拋出一個 「斷言失敗」 錯誤

 cv2.imwrite('FaceRecBaseTest/' + str(sum) + '.jpeg', vid, gray[y:y+h, x:x+w]) 

因此,很自然,我在這裏找出原因。這裏是有錯誤的完整的「榮耀」

OpenCV Error: Assertion failed (dims == 2 && (sizes[0] == 1 || sizes[1] == 1 || sizes[0]*sizes[1] == 0)) in create, file /tmp/opencv-20170224-1869-10nlf6f/opencv-2.4.13.2/modules/core/src/matrix.cpp, line 1466 libc++abi.dylib: terminating with uncaught exception of type cv::Exception: /tmp/opencv-20170224-1869-10nlf6f/opencv-2.4.13.2/modules/core/src/matrix.cpp:1466: error: (-215) dims == 2 && (sizes[0] == 1 || sizes[1] == 1 || sizes[0]*sizes[1] == 0) in function create

這裏是我的代碼的副本:

import cv2 
import time 
face_cascade = cv2. 
CascadeClassifier('haarcascade/haarcascade_frontalface_alt.xml') 
video_capture = cv2.VideoCapture(0) 
sum = 0 
while True: 
    # Captures video frame by frame 
    ret, vid = video_capture.read() 
    vid = cv2.resize(vid, (320, 220)) 
    gray = cv2.cvtColor(vid, cv2.COLOR_BGR2GRAY) 
    faces = face_cascade.detectMultiScale(gray, 1.1, 5) 

    print str(len(faces)) 
    # Draw a rectangle around the faces 
    for (x, y, w, h) in faces: 
     sum += 1 
     cv2.rectangle(vid, (x, y), (x+w, y+h), (0, 255, 0), 2) 
     cv2.imwrite('FaceRecBaseTest/' + str(sum) + '.jpeg', vid, gray[y:y+h, x:x+w]) 
     cv2.waitKey(1) 
    cv2.putText(vid, "Video: " + str(time.ctime()), (0, 10), 
    cv2.FONT_HERSHEY_PLAIN, 1, (0, 0, 255), 2, 8, bottomLeftOrigin = False) 
    # Display the results 
    if sum > 20: 
     break 
    cv2.imshow('Video', vid) 
    cv2.waitKey(1) 
video_capture.release() 
cv2.destroyAllWindows() 
+1

你在你的'imwrite'功能三個參數:文件名,'vid'和'灰色[Y:Y + H,X:X + W]'。你究竟想在這裏做什麼?你一次只能寫一個圖像,因此只有一個文件名。正確的用法是'imwrite(filename,image)'。 –

+1

...你曾經有這樣的時刻編碼,你覺得像驢呢?因爲我完全做了。謝謝。我完全忽略了這一點! 我的意思是寫''cv2.imwrite(「FaceRecBaseTest /」+ str(sum)+「.jpeg」,gray [y:y + h,x:x + w]) 謝謝!我現在正在工作......! – MattTucker

+0

哈哈當然,我們都這麼做。我已經將其添加爲答案。 –

回答

1

你有內部imwrite()三個參數:文件名和兩個圖像(vidgray[y:y+h, x:x+w])。當然,你只能傳入一張圖片。然而imwrite()實際上可以接受三個參數,第三個爲參數標誌質量/壓縮級別。從the imwrite() docs

Python: cv2.imwrite(filename, img[, params]) → retval
...
params – Format-specific save parameters encoded as pairs paramId_1, paramValue_1, paramId_2, paramValue_2, ... . The following parameters are currently supported:

相關問題