我需要检测形状并计算图像中每个形状的出现.我最初检测到轮廓并对它们进行近似,并计算每个轮廓中的顶点.我的代码如下所示:
import cv2import numpy as np import collectionsimport sysimg = cv2.imread(str(sys.argv[1]),0)ret,thresh = cv2.threshold(img,127,255,0)contours,hIErarchy = cv2.findContours(thresh,1,2)no_of_vertices = []i = 0mask = np.zeros(img.shape,np.uint8)for contour in contours: cnt = contour area = cv2.contourArea(cnt) if area>150: epsilon = 0.02*cv2.arcLength(cnt,True) approx = cv2.approxpolyDP(cnt,epsilon,True) no_of_vertices.append(len(approx))counter = collections.Counter(no_of_vertices) a,b = counter.keys(),counter.values() i=0 while i
我的代码不能用于检测此图像中的星星:
我应该在代码中做出哪些更改?
最佳答案对我有用的是比较形状周边区域的平方根.一颗恒星约为0.145(/ – .0015,因为有些边缘没有完美出现).六边形为0.255,三角形为.21,正方形为.247,五边形为.250.圆度也起作用(三角形在0.26到.27之间),并且它的区别相似(六边形为.83,三角形为.55-.56,正方形为.77,五边形为.78) )
下面是它的C代码(我的PC上没有python,但想法是一样的):
#include "stdafx.h"#include
两种方式 – 使用圆形或我的sqrt(区域)/ arclength方法 – 导致: 总结
以上是内存溢出为你收集整理的在opencv-python中检测星形全部内容,希望文章能够帮你解决在opencv-python中检测星形所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)