在数学计算领域之中,求几何图形的角度以及斜率等数值都是很常见的问题。那么python作为数据处理方向上的支柱语言之一,它对于数学计算和图像处理都有很好的支持。而本文要来给大家讲解的就是python角度测量的实现方法,一起往下看看吧。
1.该方法程序需要导入opencv模块以及math模块,这两个模块一个是用来实现图像处理,一个是调用方法来计算角度。那么模块导入完成之后就调用imread()方法将图像给读取进来并创建一个空列表对象保存坐标点数据,代码示例如下:
import cv2 import math path = "pi\\asure.bmp" img = cv2.imread(path) pointsList = []
2.那么这一步就是要定义第一个函数,该函数的作用就是获取鼠标点击时的当前为来获取坐标点,总共需要获得三个坐标点。因为之后最少三次才能形成一个夹角来获取角度,而方法内只需要使用EVENT_LBUTTONDOWN事件即可获取坐标点,详细代码如下:
def mousePoints(event,x,y,flags,params): if event ==cv2.EVENT_LBUTTONDOWN: size = len(pointsList) if size != 0 and size%3 !=0: cv2.line(img,tuple(pointsList[round((size-1)/3)*3]),(x,y),(0,0,255)) cv2.circle(img,(x,y),5,(0,0,255),cv2.FILLED) pointsList.append([x,y])
3.从第一个函数之中就已经获取到了鼠标点击时的坐标点,第二个函数的作用就是要获取相邻三个坐标点击位置来知道形成的夹角是哪一个。然后通过这三点之间的计算从而得到角度值,示例如下:
def getAngle(pointsList): pt1,pt2,pt3 = pointsList[-3:] m1 = gradient(pt1, pt2) m2 = gradient(pt1, pt3) angR = abs(math.atan((m2-m1)/(1+m2*m1))) angD = round(math.degrees(angR)) cv2.putText(img,str(angD),(pt1[0]-40,pt1[1]-20),cv2.FONT_HERSHEY_COMPLEX, 1.5,(0,0,255))
4.最后首尾就比较简单了,创建一个while无限循环结构来保证可以在一张图像上面重复的计算几何图形角度。在循环中显示图像并且触发鼠标时间,之后调用对应的函数即可,示例如下:
while True: cv2.imshow('Image', img) cv2.setMouseCallback('Image',mousePoints) if len(pointsList) % 3 ==0 and len(pointsList)!=0: getAngle(pointsList) key_scan == ord("s"): break cv2.destroyAllWindows()
以上就是关于“Python的角度测量如何实现?Python怎么测量几何图形角度”的全部内容了,希望对你有所帮助。
更多python相关文章请访问分类:python
【版权声明】本文图文出自大盘站@dapan.cc,转载请注明出处!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。