gpt4 book ai didi

python - ValueError:尝试检测汽车铭牌时,openCV中有太多值无法解包(预期为2)

转载 作者:行者123 更新时间:2023-12-02 17:33:30 24 4
gpt4 key购买 nike

我是图像处理新手。我有一个包含各种汽车图像的文件夹。我试图仅提取其铭牌并将其放在其他文件夹中。我在以下代码的第5行中收到一条错误消息,指出“ValueError:太多值无法解包(预期2)”。我在互联网上查找了此代码并试图理解它。据我所知,我们首先使用 imread 函数读取图像并将其转换为灰色空间。 Canny功能可帮助检测边缘,而findContours可帮助查找图像的轮廓。我似乎不太明白后面的代码。如果有人可以指导我完成代码并帮助我对错误进行分类,将很有帮助。

import cv2 
image = cv2.imread("path")
imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(imgray,127,255,0)
im2, contours, hierarchy =
cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
cnt = contours[4]
cv2.drawContours(im2, [cnt], 0, (0,255,0), 3)
idx = 0
for c in cnts:
x,y,w,h = cv2.boundingRect(c)
if w>50 and h>50:
idx+=1
new_img=image[y:y+h,x:x+w]
cv2.imwrite(str(idx) + '.png', new_img)
cv2.imshow("im",image)
cv2.waitKey(0)

最佳答案

cv 3.0有所更改
现在与.findContours有关的返回3个值。

https://docs.opencv.org/3.1.0/d4/d73/tutorial_py_contours_begin.html

import cv2 
image = cv2.imread("path")
gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
edged = cv2.Canny(image, 10, 250)

#old way
#(cnts, _) = cv2.findContours(edged.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 3.0 way
_, cnts, hierarchy = cv2.findContours(edged, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

idx = 0
for c in cnts:
x,y,w,h = cv2.boundingRect(c)
if w>50 and h>50:
idx+=1
new_img=image[y:y+h,x:x+w]
cv2.imwrite(str(idx) + '.png', new_img)
cv2.imshow("im",image)
cv2.waitKey(0)

关于python - ValueError:尝试检测汽车铭牌时,openCV中有太多值无法解包(预期为2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53781496/

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