Python 3.x 当我在python中使用open CV从图像中检测形状时,外部边界也会被识别,我能做些什么来阻止这种情况?

Python 3.x 当我在python中使用open CV从图像中检测形状时,外部边界也会被识别,我能做些什么来阻止这种情况?,python-3.x,opencv,border,object-detection,shapes,Python 3.x,Opencv,Border,Object Detection,Shapes,当我使用open CV从图像中检测形状时,外部边界也会被识别。我能做些什么来阻止这一切 这是我的代码: import cv2 import numpy as np img=cv2.imread("C:\\Users\\laksh\\OneDrive\\Desktop\\E-Yantra\\task_1a_explore_opencv\\task_1a_explore_opencv\\Task_1A_Part1\\Samples\\Sample1.png") #print(im

当我使用open CV从图像中检测形状时,外部边界也会被识别。我能做些什么来阻止这一切

这是我的代码:

import cv2
import numpy as np
img=cv2.imread("C:\\Users\\laksh\\OneDrive\\Desktop\\E-Yantra\\task_1a_explore_opencv\\task_1a_explore_opencv\\Task_1A_Part1\\Samples\\Sample1.png")
#print(img)
img2 = cv2.imread('C:\\Users\\laksh\\OneDrive\\Desktop\\E-Yantra\\task_1a_explore_opencv\\task_1a_explore_opencv\\Task_1A_Part1\\Samples\\Sample1.png', cv2.IMREAD_COLOR)
font = cv2.FONT_HERSHEY_COMPLEX 
    
imgGrey = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret, thresh= cv2.threshold(imgGrey,240,255,cv2.THRESH_BINARY)
contours, _ = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)


for contour in contours:
    approx=cv2.approxPolyDP(contour,0.01* cv2.arcLength(contour, True),True)
    cv2.drawContours(img, [approx ],-1 ,(0,0,0),5)
cv2.imshow("shapes",img)
cv2.waitKey()
cv2.closeAllWindows()
此图显示,外部矩形以及两个内部形状都被重新加工:


发生这种情况是因为你的背景不是黑色的。OpenCV将其视为大矩形。若要避免这种情况,请更改bg颜色,或者从检测到的形状列表中删除具有图像大小的矩形。您还可以找到渐变并在图像周围绘制黑色边框,以从背景中删除边缘