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