千家信息网

怎么用Python OpenCV寻找两条曲线直接的最短距离

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍了怎么用Python OpenCV寻找两条曲线直接的最短距离的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Python OpenCV寻找两条曲线直接
千家信息网最后更新 2026年11月01日怎么用Python OpenCV寻找两条曲线直接的最短距离

这篇文章主要介绍了怎么用Python OpenCV寻找两条曲线直接的最短距离的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Python OpenCV寻找两条曲线直接的最短距离文章都会有所收获,下面我们一起来看看吧。

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, (3,3), 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 = (0,0)minPt1 = (0,0)for i in range(0,len(contours[1])):#遍历所有轮廓  pt = tuple(contours[1][i][0])  #print(pt)  min_dis = 10000  min_pt = (0,0)  #distance = cv2.pointPolygonTest(contours[1], pt, False)  for j in range(0,len(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()

原图:

结果图:

关于"怎么用Python OpenCV寻找两条曲线直接的最短距离"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"怎么用Python OpenCV寻找两条曲线直接的最短距离"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

曲线 短距离 知识 内容 篇文章 价值 原图 操作简单 文章 易懂 更多 看吧 结果 行业 资讯 资讯频道 轮廓 频道 学习 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州淘业互联网络科技 互联网科技的英文 汇久创客互联网科技 甘肃拓世互联网科技有限公司 互联网公司会议桌创意科技软装饰 湖南洣水互联网科技有限公司扣款 温州喔噻互联网科技有限公司 福州新华互联网科技学校 知乎 宁夏科技产业互联网案例 重庆互联网医院沙龙医盟信息科技 语蝶互联网科技有限公司 工业互联网山东科技大学 皮皮虾互联网科技有限公司 中国新注册互联网科技 银川新华互联网科技学校是国营吗 兰石爱特工业互联网科技分公司 北京天晋互联网科技有限公司 绵阳真晨互联网科技有限公司 互联网科技创新创业项目 颐高云石互联网科技 互联网科技名片 新华互联网科技学院 互联网最新的科技有限公司 美国互联网科技 互联网未来科技 互联网金融中的现代科技 乌苏新华互联网科技做什么的 广州富喜互联网络科技 杭州披云加互联网科技有限公司 领航科技大厦互联网公司
0