Get the App
SLTechnology News&Howtos  ›  Development  › 

How to use Python OpenCV to find the direct shortest distance between two curves

Shulou Source: shulou.com Published: 2022-06-01 18:56:49 09月28日 Update

This article mainly introduces how to use Python OpenCV to find the two curves directly the shortest distance related knowledge, the content is detailed and easy to understand, the operation is simple and fast, has a certain reference value, I believe that after reading this article on how to use Python OpenCV to find the two curves directly the shortest distance article will have a harvest, let's take a look at it.

Import numpy as npimport mathimport cv2def cal_pt_distance (pt1, pt2): dist = math.sqrt (pow (pt1 [0]-pt2 [0], 2) + pow (pt1 [1]-pt2 [1], 2)) return distfont = cv2.FONT_HERSHEY_SIMPLEXimg = cv2.imread ('01.png') # cv2.imshow (' src',img) gray = cv2.cvtColor (img,cv2.COLOR_BGR2GRAY) gray = cv2.GaussianBlur (gray, (3Magne3), 0) ret,thresh = cv2.threshold (gray, 150,255) Cv2.THRESH_BINARY) image,contours,hierarchy = cv2.findContours (thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) # thresh,contours,hierarchy = cv2.findContours (thresh, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE) flag = FalseminDist = 10000minPt0 = (0L0) minPt1 = (0L0) for i in range (0 Len (contours [1]): # traverse all contours pt = tuple (contours [1] [I] [0]) # print (pt) min_dis = 10000 min_pt = (0L0) # distance = cv2.pointPolygonTest (contours [1], pt, False) for j in range (0Len (contours [0]): pt2 = tuple (contours [0] [j] [0]) distance = cal_pt_distance (pt, pt2) # print (distance) if distance

< min_dis: min_dis = distance min_pt = pt2 min_point = pt if min_dis < minDist: minDist = min_dis minPt0 = min_point minPt1 = min_pt temp = img.copy() cv2.drawContours(img,contours,1,(255,255,0),1) cv2.line(temp,pt,min_pt,(0,255,0),2,cv2.LINE_AA) cv2.circle(temp, pt,5,(255,0,255),-1, cv2.LINE_AA) cv2.circle(temp, min_pt,5,(0,255,255),-1, cv2.LINE_AA) cv2.imshow("img",temp) if cv2.waitKey(1)&0xFF ==27: #按下Esc键退出 flag = True break if flag: breakcv2.line(img,minPt0,minPt1,(0,255,0),2,cv2.LINE_AA)cv2.circle(img, minPt0,3,(255,0,255),-1, cv2.LINE_AA)cv2.circle(img, minPt1,3,(0,255,255),-1, cv2.LINE_AA)cv2.putText(img,("min_dist=%0.2f"%minDist), (minPt1[0],minPt1[1]+15), font, 0.7, (0,255,0), 2)cv2.imshow('result', img)cv2.imwrite('result.png',img)cv2.waitKey(0)cv2.destroyAllWindows() 原图:

Result picture:

This is the end of the article on "how to use Python OpenCV to find the shortest distance between two curves". Thank you for reading! I believe that everyone has a certain understanding of the knowledge of "how to use Python OpenCV to find the direct shortest distance between two curves". If you want to learn more, you are welcome to follow the industry information channel.

Tags: Curve short distance knowledge content article value original picture easy to operate article easy to understand more read result industry information information channel outline channel learning Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Redmi OPPO Reno macOS MariaDB Xiaomi