gpt4 book ai didi

Python OpenCV : Cannot resize image

转载 作者:太空宇宙 更新时间:2023-11-03 13:31:12 25 4
gpt4 key购买 nike

我正在使用 Python 3 和 OpenCV 3。我正在尝试使用 EigenFace Recognizer,它对训练和测试数据集使用相同大小的图像。我从网络摄像头读取图像并将图像调整为 200 x 200,但显示错误。

这是我的代码:

faceDetect=cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
cam=cv2.VideoCapture(0);
rec=cv2.face.EigenFaceRecognizer_create()
#rec=cv2.face.LBPHFaceRecognizer_create()
rec.read("recognizer/EigenData.xml")
id=0

fontFace = cv2.FONT_HERSHEY_SIMPLEX
fontScale = 1
fontColor = (0, 0, 255)

while(True):
ret,img=cam.read();

resize_img = img.resize((200,200) , img)
gray=cv2.cvtColor(resize_img,cv2.COLOR_BGR2GRAY)
faces=faceDetect.detectMultiScale(gray,1.3,5);

for(x,y,w,h) in faces:

cv2.rectangle(img,(x,y),(x+w, y+h), (0,255,0) , 2)
id, conf=rec.predict(gray[y:y+h, x:x+w]) #EigenFace Predict
cv2.putText(img,str(id),(x,y+h), fontFace, fontScale, fontColor,thickness=2)

cv2.imshow("Face", img);
if(cv2.waitKey(1)==ord('q')):
break;

cam.release()
cv2.destroyAllWindows()

我得到的错误是:

resize_img = img.resize((200,200) , img)
TypeError: 'tuple' object cannot be interpreted as an integer

最佳答案

OpenCV 使用 NumPy 数组作为表示图像的基本数据类型。事实上,NumPy 有一个 resize 方法来“调整”数据,但你没有正确使用它。通过 consulting the documentationnumpy.resize 方法要求您反转参数的顺序。输入数组首先出现,然后是所需的大小。你几乎是正确的 - 只需交换参数的顺序。

但是,我不相信这是你要找的东西,因为 numpy.resize 用输入的重复副本填充输出数组 - 特别是因为你这样做是为了面部认出。我相信您想调整图像内容的大小以适应所需的大小,而不是用原始大小不变的输入的重复副本填充数组。

因此,cv2.resize更适合你。您可以像 numpy.resize 一样调用它:

resize_image = cv2.resize(img, (200,200))

请注意,默认的调整大小方法使用双线性插值。如果你想使用另一种方法,你必须提供一个额外的参数 interpolation 来做到这一点。如果你想执行三次插值,你会这样做:

resize_image = cv2.resize(img, (200,200), interpolation=cv2.INTER_CUBIC)

查看有关 cv2.resize 的文档以了解更多详细信息:https://docs.opencv.org/3.0-beta/modules/imgproc/doc/geometric_transformations.html#resize

关于Python OpenCV : Cannot resize image,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46844444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com