CV2(CV2.imwrite)-Python不断抛出一个;断言失败,";错误

CV2(CV2.imwrite)-Python不断抛出一个;断言失败,";错误,python,opencv,Python,Opencv,所以,如果我离开的话,我会不断得到一个“断言失败”的错误 cv2.imwrite('FaceRecBaseTest/' + str(sum) + '.jpeg', vid, gray[y:y+h, x:x+w]) 所以,很自然,我来这里是想找出原因。这是它的全部“荣耀”中的错误: OpenCV错误:在创建文件/tmp/OpenCV-20170224-1869-10nlf6f/OpenCV-2.4.13.2/modules/core/src/matrix.cpp的第1466行中,

所以,如果我离开的话,我会不断得到一个“断言失败”的错误

        cv2.imwrite('FaceRecBaseTest/' + str(sum) + '.jpeg', vid, gray[y:y+h, x:x+w])
所以,很自然,我来这里是想找出原因。这是它的全部“荣耀”中的错误:

OpenCV错误:在创建文件/tmp/OpenCV-20170224-1869-10nlf6f/OpenCV-2.4.13.2/modules/core/src/matrix.cpp的第1466行中,断言失败(dims==2&(大小[0]==1 | | |大小[1]==1 | | |大小[0]*sizes[1]=0]) libc++abi.dylib:以cv::exception类型的未捕获异常终止:/tmp/opencv-20170224-1869-10nlf6f/opencv-2.4.13.2/modules/core/src/matrix.cpp:1466:错误:(-215)dims==2&(大小[0]=1 |大小[1]=1 |大小[0]*1]=0)在函数创建中

这是我的代码副本:

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()

imwrite()
中有三个参数:文件名和两个图像(
vid
gray[y:y+h,x:x+w]
)。当然,您只能传入一个图像。但是
imwrite()
实际上可以接受三个参数,第三个是质量/压缩级别的参数标志。发件人:

Python
cv2.imwrite(文件名,img[,参数])→ 检索


params–特定于格式的保存参数编码为对paramId_1、paramValue_1、paramId_2、paramValue_2等。当前支持以下参数:


imwrite
函数中有三个参数:文件名、
vid
gray[y:y+h,x:x+w]
。你到底想在这里干什么?当然,一次只能写入一个图像,因此只有一个文件名。正确的用法是
imwrite(文件名、图像)
…你有过这样的时刻吗?在编码的时候,你觉得自己像个傻瓜吗?因为我就是这么做的。非常感谢。我完全忽略了这一点!我本来打算写,
cv2.imwrite(“FaceRecBaseTest/”+str(sum)+.jpeg”,gray[y:y+h,x:x+w])
谢谢!我现在可以用了。。。!哈哈,当然,我们都有。我把它作为一个答案加上去了。