Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算图像中形状的数量_Python_Opencv - Fatal编程技术网

Python 计算图像中形状的数量

Python 计算图像中形状的数量,python,opencv,Python,Opencv,我试图计算棋盘游戏图像中的形状数。由于某种原因,计数完全不正确 我一直在使用来自web的代码(例如,) 我只需要opencv就可以了,其他人有这个问题吗?我如何将它限制为我感兴趣的方块 我用油漆去除了数字的边缘,这些边缘打断了每个方框的白线。我假设这些数字和点是您添加的东西,而不是原始图像的一部分 这是我修改后的图像 我通过寻找图像中的白色制作了一个面具。我将结果放大以获得更清晰的分离,并将其倒置,使每个盒子都是白色的 我使用findContours获得面具中每个白色物体的轮廓。我按大小过

我试图计算棋盘游戏图像中的形状数。由于某种原因,计数完全不正确

我一直在使用来自web的代码(例如,)

我只需要opencv就可以了,其他人有这个问题吗?我如何将它限制为我感兴趣的方块


我用油漆去除了数字的边缘,这些边缘打断了每个方框的白线。我假设这些数字和点是您添加的东西,而不是原始图像的一部分

这是我修改后的图像

我通过寻找图像中的白色制作了一个面具。我将结果放大以获得更清晰的分离,并将其倒置,使每个盒子都是白色的

我使用findContours获得面具中每个白色物体的轮廓。我按大小过滤轮廓,以去除箭头、字母位和图像背景。从那里我画出了每个剩余轮廓的质心

导入cv2
将numpy作为np导入
#加载图像
img=cv2.imread(“斜槽n_梯子.png”);
#面具
灰色=cv2.CVT颜色(img,cv2.COLOR_BGR2GRAY);
掩模=cv2.inRange(灰色,240255);
#膨胀和倒置
核=np.ones((3,3),np.uint8);
掩码=cv2.deflate(掩码,内核,迭代次数=1);
掩码=cv2。按位\u非(掩码);
#轮廓
_,等高线,u=cv2.找到的轮廓(遮罩,cv2.RETR_树,cv2.CHAIN_近似简单);
#删除非常大和非常小的轮廓
过滤=[];
低=1000;
高=100000;
对于轮廓中的con:
面积=cv2。轮廓面积(con);
如果低<面积和面积<高:
过滤。追加(con);
#画出每个物体的中心
打印(“形状:+str(len(filtered)));
对于过滤后的con:
M=cv2.力矩(con);
cx=int(M['m10']/M['m00']);
cy=int(M['m01']/M['m00']);
cv2.圆(img,(cx,cy),10,(020010),-1);
#展示
cv2.imshow(“图像”,img);
cv2.imshow(“面具”,面具);
cv2.waitKey(0);

请随代码提供一个输入图像。您可以在没有所有处理内容的情况下发布原始图像吗?