Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何解决这个问题;OSError:无法识别图像文件";Opencv imwrite不';我不能保存图像_Python_Image_Opencv_Face Recognition - Fatal编程技术网

Python 如何解决这个问题;OSError:无法识别图像文件";Opencv imwrite不';我不能保存图像

Python 如何解决这个问题;OSError:无法识别图像文件";Opencv imwrite不';我不能保存图像,python,image,opencv,face-recognition,Python,Image,Opencv,Face Recognition,我现在正在从这个git学习Opencv 并添加一些代码来捕获图像,它会捕获图像并将其保存到我指定的路径 但它没有显示它保存的图像(对不起,我不知道该怎么称呼它),它说不支持这种格式的文件 !![1] : 我尝试将格式文件更改为jpg、bmp、png 将这些代码移入/移出for循环 加 如果不在imshow for循环中 poor_match_index = np.argmax(face_distances) if matches[poor_matc

我现在正在从这个git学习Opencv

并添加一些代码来捕获图像,它会捕获图像并将其保存到我指定的路径 但它没有显示它保存的图像(对不起,我不知道该怎么称呼它),它说不支持这种格式的文件

!![1] :

我尝试将格式文件更改为jpg、bmp、png 将这些代码移入/移出for循环 加

如果不在imshow for循环中

poor_match_index = np.argmax(face_distances)            
           if matches[poor_match_index]:
               cv2.imwrite("tanapat/unknown_" + str(count) + ".jpg", frame[right:left,top:bottom]) 
               unknown = face_recognition.load_image_file("tanapat/unknown_"+ str(count) +".jpg")
               unknown_encoding = face_recognition.face_encodings(unknown )[0]
               known_face_encodings.append(unknown_encoding)
               known_face_names.append("unknown_"+str(count))
               name = known_face_names[poor_match_index]
               count +=1
               break
我试着让它重复以捕捉新面孔并识别它(试着不要让它继续捕捉同一个人太多帧)

但我在网上出错了

unknown = face_recognition.load_image_file("tanapat/unknown_"+ str(count) +".jpg")
OSError:如果使用,则无法识别图像文件“tanapat/unknown_0.jpg”

top = 200
right = 200
bottom = 200
left = 200
然后
frame[200:200200:200]
创建空数组

 width = right - left = 200 - 200 = 0
 height = bottom - top = 200 - 200 = 0
当您保存空数组时,您将得到空文件-my Linux显示此
.jpg的大小为0,并且您无法打开空文件

你至少需要

top = 200
bottom = top + 1  # 201

left = 200
right = left + 1  # 201
要使用一个像素创建文件-
帧[200:201200:201]


如果使用
print()
显示来自
imwrite()的结果


如果保存文件时出现问题,则会得到
False

您是否检查过是否可以在任何图像查看器中打开此文件?使用
200
进行
上、下、右、左
时,您有
帧[200:200200:200]
而您得到的是空数组-没有任何像素-因此读取没有像素的图像可能会有问题。如果您运行
print(cv2.imwrite(…)
,则如果保存图像,它应该显示
True
,如果保存图像有问题,它应该显示
False
。我检查了,有一个图像文件,但没有显示任何图像(0字节)。我试图增加到200多个
顶部、底部、右侧、左侧
,但是
打印(cv2.imwrite(…)
仍然
错误
如果文件有0个字节,那么里面没有图像,所以程序无法显示它。如果是jpg或其他格式,他们甚至无法加载包含信息的数据-他们不使用文件扩展名来识别格式。不能对顶部和底部使用相同的值,因为
height=bottom-top=200-200=0
right
left
使用相同的值,因为
width=right-left=200-200=0
top = 200
bottom = top + 1  # 201

left = 200
right = left + 1  # 201
print(cv2.imwrite(...))