# 均值滤波
dst_jz = cv2.blur(dst2,(9,9))
cv2.imshow("dst_sb", dst_jz)# 高斯滤波
dst_gs = cv2.GaussianBlur(dst2,(5,5),0,0)
cv2.imshow("dst_sb", dst_gs)# 双边滤波
dst_sb = cv2.bilateralFilter(dst2, 15, 155, 100)
cv2.imshow("dst_sb", dst_sb)# 腐蚀
k = np.ones((9,9),np.uint8)
det_fs = cv2.erode(dst2,k)
cv2.imshow("det_fs", det_fs)

已知两条直线四个点(两个点构成一条直线),求这两条直线的交点坐标。

# 求直线方程的参数
def equation_parameters(x0, y0, x1, y1):a = y0 - y1b = x1 - x0c = x0*y1 - x1*y0return a, b, c# 构造直线方程并求交点
def linear_equation_point(line1, line2):a0, b0, c0 = equation_parameters(*line1)a1, b1, c1 = equation_parameters(*line2)D = a0 * b1 - a1 * b0if D == 0:return Nonex = (b0 * c1 - b1 * c0) / Dy = (a1 * c0 - a0 * c1) / Dreturn x, yif __name__ == '__main__':line1 = [5, 5, 10, 10]line2 = [9, 9, 10, 0]cross_pt = linear_equation_point(line1, line2)print(cross_pt)
"""
功能:导入图片,求两直线交点,再求直线距离
"""import cv2
import numpy as np
import mathclass MainWindow():def __init__(self):super().__init__()img = cv2.imread("D:/Users/xuyf2/Desktop/project_C/cap_2/2cp1638667470.jpg")img = img[357:517, 613:779]# cv2.imwrite("D:/Users/xuyf2/Desktop/project_C/cap_2/" + '2'  + ".jpg", img)edges = self.image_processing(img)                 # 图像处理line_zuobiao = self.line_detection(edges)          # 寻找直线坐标# 求交点crossover_point1 = self.linear_equation_point(line_zuobiao[0], line_zuobiao[1])crossover_point2 = self.linear_equation_point(line_zuobiao[1], line_zuobiao[2])crossover_point3 = self.linear_equation_point(line_zuobiao[2], line_zuobiao[3])crossover_point4 = self.linear_equation_point(line_zuobiao[3], line_zuobiao[4])# print(list(crossover_point1),list(crossover_point2),list(crossover_point3),list(crossover_point4))# 求长度long1 = self.width_calculation(list(crossover_point1),list(crossover_point2))long2 = self.width_calculation(list(crossover_point3), list(crossover_point4))act_long1 = self.actual_width_jier(long1)act_long2 = self.actual_width_jier(long2)print('极耳像素点长度:',long1,long2)print('极耳实际长度:', act_long1, act_long2)# 画线self.LineAtext1(img, crossover_point1, crossover_point2, crossover_point3, crossover_point4)cv2.imshow("LineAtext1", img)# 图像处理def image_processing(self, img):# 灰度处理gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# Otsu方法t2, dst2 = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)# 中值滤波scr1 = cv2.medianBlur(dst2, 9)cv2.imshow("3", scr1)# 边缘检测edges = cv2.Canny(scr1, 150, 250, L2gradient=True)cv2.imshow("bianyuanjiance", edges)return edgesdef line_detection(self,img):lines = cv2.HoughLinesP(img, 1, np.pi / 180, 30, minLineLength=30, maxLineGap=30)zuobiaos = []for line in lines:x1, y1, x2, y2 = line[0]zuobiao = [x1, y1, x2, y2]zuobiaos.append(zuobiao)print('直线检测出线段数:',len(zuobiaos))#     cv2.line(img, (x1, y1), (x2, y2), (0, 0, 255), 2)# cv2.imshow("img1", img)zuobiaos_new = sorted({tuple(x): x for x in zuobiaos[:]}.values())# print(zuobiaos_new)return zuobiaos_new# 计算两点之间长度def width_calculation(self,list_point1,list_point2):p1 = np.array(list_point1)p2 = np.array(list_point2)p3 = p2 - p1long = math.hypot(p3[0], p3[1])long = ('%.3f' % long)return long# 求直线方程的参数def equation_parameters(self, x0, y0, x1, y1):a = y0 - y1b = x1 - x0c = x0*y1 - x1*y0return a, b, c# 构造直线方程并求交点def linear_equation_point(self, line1, line2):a0, b0, c0 = self.equation_parameters(*line1)a1, b1, c1 = self.equation_parameters(*line2)D = a0 * b1 - a1 * b0if D == 0:return Nonex = (b0 * c1 - b1 * c0) / Dy = (a1 * c0 - a0 * c1) / Dreturn x, y# 画线def LineAtext1(self, image, a, b, c, d):line_color = (0, 0, 255)line_thin = 2cv2.line(image, (int(a[0]),int(a[1])), (int(b[0]),int(b[1])), line_color, line_thin)cv2.line(image, (int(c[0]),int(c[1])), (int(d[0]),int(d[1])), line_color, line_thin)return imagedef actual_width_jier(self, long):width = (16.0 * float(long)) / 89.0width = float('%.2f' % width)return widthif __name__ == '__main__':mainWindow = MainWindow()cv2.waitKey(0)cv2.destroyAllWindows()

opencv根据直线方程求交点坐标相关推荐

  1. python求交点坐标_Python - 两圆相交求交点坐标

    Python - 两圆相交求交点坐标 Max.Bai 2016-05-16 Python - 两圆相交求交点坐标 三轴机械臂求坐标问题,其实转化为平面问题就是两圆相交求交点问题,交点算出来就可以用反三 ...

  2. python求交点坐标_Python求两个圆的交点坐标或三个圆的交点坐标方法

    计算两个圆的交点 代码如下: # -*- coding: utf-8 -*- import math import numpy as np def insec(p1,r1,p2,r2): x = p1 ...

  3. CAD二次开发--两条线交叉求交点坐标的方法建议(IntersectWith的使用注意)

    通常来说两条线求交点在CAD中你可以采用CAD封装好的IntersectWith方法,也可以采用自己判断的方法,下面结合我自己工作经历来说一说思路和建议吧. 目录 1.自己判断的方法(不推荐) 2.I ...

  4. matlab求两方程交点坐标,matlab求交点坐标

    b xi ? 0(i ? 1, 2, , n) 三.线性规划问题的求解方法二元线性规划问题的图解法 线性规划问题的理论解法 线性规划问题的MATLAB软件解法 线性规划问题的图解...... MATL ...

  5. 两条直线求交点c语言,C§ 3.3.1两条直线的交点坐标(5页)-原创力文档

    § 3.1两条直线的交点坐标 学习目标 1.掌握判断两直线相交的方法:会求两直线交点坐标: 2.体会判断两直线相交中的数形结合思想. 学习过程 一.课前准备: (预习教材P112~ P114,找出疑 ...

  6. c语言直线和椭圆的交点,直线与椭圆相交求交点

    已知a,b和直线上的两点,中心在原点,求直线与椭圆相交求交点坐标 #include #include #include void main() { double a,b,c,x1,x2,y1,y2,k ...

  7. Matlab计算两条直线的交点坐标

    %% 已知两条直线的斜率和截距,求交点坐标 function [x,y]=linecross(k1,b1,k2,b2)x=[];y=[];if k1==k2&b1==b2disp('chong ...

  8. C++编程求三角形角平分线与对边的交点坐标

    问题:设ABC三点,形成三角形,求角平分线与AC的交点坐标(x', y') 方案: 1. 已知两点求直线方程:A(x1,y1), B(x2,y2),求直线Line(A-B)的一般直线方程 ax + b ...

  9. C++三角定位法求两圆交点坐标

    已知:两个圆相交,圆心坐标,半径 求:两个圆的交点坐标 IDE:VS2019 三角定位法代码如下如下: 数学推理过程动手画图即可明白.变量含义注释已标明. 畅所欲言,欢迎指正 既来之,则赞之~

最新文章

  1. vue使用webpack创建项目的命令
  2. CPU实模式和保护模式、全局描述符表GDT、Linux内核中GDT和IDT的结构定义
  3. 二线城市IT人员如何发展
  4. redis的操作 json对象实例
  5. MED-V服务器的部署与配置
  6. GNU-Radio USRP Example
  7. lintcode 627 最长回文串Python版本
  8. messagebox的用法_酝酿已久,MessageBox类实例代码讲解
  9. 微服务集成cas_Spring Cloud(四) Spring Cloud Security集成CAS (单点登录)对微服务认证...
  10. Windows驱动开发,几个BLOG值得经常看看
  11. 万兆网口和千兆网口区别_万兆网卡的安装 以及注意事项
  12. Altium Designer_PCB板装配图的PDF文件输出
  13. 沙箱 sandbox
  14. pycharm复制一行
  15. 计算机软件授权使用协议,软件许可使用协议
  16. ZigBee学习之11——MAC层API解读2
  17. 软件需求工程与uml建模——高速公路智能服务区
  18. mybatis-日志工厂
  19. 华为薪资垫底,腾讯阿里被逆袭,第一竟然是…
  20. 简单二阶滤波器截止频率的计算

热门文章

  1. 关于Python爬虫原理和数据抓取1.1
  2. Django 视图URLconf3.1
  3. Cocos Creator里cc.tween的stopAllActions() 和 repeatForever的用法
  4. 【hexo】搭建个人bolg日志 day1
  5. Android 使用adb 命令截图 的方法
  6. INSTALL_FAILED_TEST_ONLY
  7. 讯飞语音:客户端未被授权
  8. 大话设计模式笔记(七)の原型模式
  9. codeforces-1132 (div2)
  10. java 中常用的类