首页 > 解决方案 > 如何在opencv中显示轮廓或形态变化的图像

问题描述

img = cv2.imread("/Users/meenakshi/Desktop/lala.jpg")
img=cv2.resize(img,(1200,700))
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
binary = cv2.inRange(gray,65,255)
image,contours,hierarchy = cv2.findContours(binary.copy(),cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
cnt = max(contours, key= lambda x: cv2.contourArea(x))
cv2.imshow("Radar", cnt)
cv2.waitKey(0)
epsilon = 0.0005*cv2.arcLength(cnt,True)
cnt = cv2.approxPolyDP(cnt,epsilon,True)
M = cv2.moments(cnt)
cX = int(M["m10"]/M["m00"])
cY = int(M["m01"]/M["m00"])
cv2.circle(cnt,(cX,cY),7,(0,255,0),-1)

这是我的代码,我想看到带有矩圆的最终轮廓图像,但是当我给出

cv2.imshow("Image", cnt)
cv2.waitKey(0)

错误显示为

(-15:Bad number of channels) Source image must have 1, 3 or 4 channels in function 'cvConvertImage'

我应该怎么办?

标签: pythonimageopencv

解决方案


cv2.circle(cnt,(cX,cY),7,(0,255,0),-1)

在具有最大面积的轮廓上创建一个圆圈。如果你想在原始图像上看到一个圆圈,你可以传递 img 而不是 cnt

cv2.circle(img,(cX,cY),7,(0,255,0),-1)
cv2.imshow("Image", img)

推荐阅读