为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用opencv-python识别图像的形状是对称的还是不对称的?

如何使用opencv-python识别图像的形状是对称的还是不对称的?

慕侠2389804 2021-08-17 17:05:27
我正在研究图像特征的提取,其中我试图确定某个图像是否对称。我正在使用 opecv - python 来开发这项工作。下面的代码用于识别感兴趣区域的中心和直径。你怎么知道这个图像是否对称?import cv2import numpy as npimport matplotlib.pyplot as pltfrom matplotlib.offsetbox import AnchoredTextIMG = '015'thresh = cv2.imread(IMD+'.png',0)_, contours,hierarchy = cv2.findContours(thresh,2,1)print (len(contours))cnt = contoursfor i in range (len(cnt)):    (x,y),radius = cv2.minEnclosingCircle(cnt[i])    center = (int(x),int(y))    radius = int(radius)    cv2.circle(thresh,center,radius,(0,255,0),2)    print ('Circle: ' + str(i) + ' - Center: ' + str(center) + ' - Radius: ' + str(radius))plt.text(x-21, y+15, '+', fontsize=25, color = 'red')plt.text(10, -10, 'Centro: '+str(center), fontsize=11, color = 'red')plt.text(340, -10, 'Diametro: '+str((radius*2)/100)+'mm', fontsize=11,     color = 'red')plt.Circle((10, -10), 7.2, color='blue')plt.imshow(thresh, cmap='gray')#plt.savefig(IMG+'-diam.png')plt.show()出口:在这种情况下,我想对我分析的点是否对称进行分类,下图,视觉上注意到它不对称,而上图的第一张图像是对称的。
查看完整描述

2 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

这是我将如何解决这个问题:

  1. 测量每个半径到中心的距离

  2. 将测量值分成两组(0 到 180、180 到 360)

  3. 获取两组的平均值并比较它们是否在误差范围内相等。

  4. 将组的拆分旋转 1 度,然后再试一次,直到达到 179 度

  5. 检查返回的任何拆分是否在边距内相等。

您可能需要稍微调整一下相等边距才能找到一个可以接受的准确范围。

此外,您可能需要法定人数检查旋转以查看 x 旋转在边距内是否相等,然后它是对称的。

您可能还需要将其划分为象限而不是一半,等待您要检查对称性的轴数。


查看完整回答
反对 回复 2021-08-17
  • 2 回答
  • 0 关注
  • 914 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信