Python 利用OpenCV技术检测piechart中的角度

Python 利用OpenCV技术检测piechart中的角度,python,opencv,angle,opencv-python,opencv-contour,Python,Opencv,Angle,Opencv Python,Opencv Contour,我正在尝试使用OpenCV检测piechat图像中的角度。我使用HoughlinesP检测线条,并尝试查找线条之间的角度,但它没有显示直角,如果饼图中有任何直线(如180度),则会出现问题 我使用findContours尝试了另一种技术。它会给我一个饼图的边界区域,但我停留在那里,我不知道下一步该怎么做 已编辑 以下是作为示例的图像: 我们将感谢您提供的任何帮助和帮助。 提前感谢。我正在对切片的颜色值进行阈值分割,并计算切片中的像素数。我将像素数转换为百分比,然后将百分比转换为角度 我得到

我正在尝试使用OpenCV检测piechat图像中的角度。我使用
HoughlinesP
检测线条,并尝试查找线条之间的角度,但它没有显示直角,如果饼图中有任何直线(如180度),则会出现问题

我使用
findContours
尝试了另一种技术。它会给我一个饼图的边界区域,但我停留在那里,我不知道下一步该怎么做

已编辑 以下是作为示例的图像:

我们将感谢您提供的任何帮助和帮助。
提前感谢。

我正在对切片的颜色值进行阈值分割,并计算切片中的像素数。我将像素数转换为百分比,然后将百分比转换为角度

我得到的结果是:

[54.4,18.3,27.3]

[195.84,65.88,98.28]

导入cv2
将numpy作为np导入
#在鼠标下获取像素值
def clicky(事件、x、y、标志、参数):
如果event==cv2.event\u LBUTTONUP:
全球h;
打印(h[y][x]);
#加载图像
img=cv2.imread(“pie.jfif”);
#调整大小
比例=0.5;
h、 w=惯性形状[:2];
h=整数(h*刻度);
w=整数(w*刻度);
img=cv2。调整大小(img,(w,h));
#高速列车
hsv=cv2.cvt颜色(img,cv2.COLOR_BGR2HSV);
h、 s,v=cv2.分裂(hsv);
h=cv2.medianBlur(h,5);
#寻找价值
cv2.namedWindow(“色调”);
cv2.setMouseCallback(“色调”,clicky);
尽管如此:
cv2.imshow(“色调”,h);
如果cv2.waitKey(1)=ord('q'):
打破
#阈值(102、60、14)
切片=[];
范围=[102,60,14];
对于范围内的r:
掩模=cv2.inRange(h,r-1,r+1);
追加(np.sum(mask==255));
#将切片转换为百分比
百分比=[];
总计=总和(切片);
对于切片中的s:
百分比=(s/总数)*100;
追加百分比(四舍五入(百分比,1));
打印(百分比);
#转换成角度
角度=[];
总数=360;
对于以百分比表示的p:
附加角度(p*总计/100);
打印(角度);

按图像上的“q”键,越过代码的颜色查找部分。

您能发布piechart图像吗?请检查。我在帖子中添加了这些图片。你拯救了我的一天。谢谢有没有办法在特定区域内自动获得此点击事件??有时我得到的是零值。。