OpenCV图像中绘制通过两点的直线(Python / C++源码)

前言

本文实现的功能是已知图像上的两点坐标,计算并绘制图像上通过这两点的直线。

这个功能写代码时经常会用到,所以将代码整理记录一下,方便后续查找。

代码与演示

Python-OpenCV实现源码: 

import numpy as np
import cv2
font = cv2.FONT_HERSHEY_SIMPLEX

def get_points_line(img, pt1, pt2):
  ptStart = (0,0)
  ptEnd = (0,0)
  rows,cols = img.shape[0:2]
  if pt1[0] == pt2[0]:
    ptStart = (pt1[0],0)
    ptEnd = (pt1[0],rows)
    
  elif pt1[1] == pt2[1]:
    ptStart = (0,pt1[1])
    ptEnd = (cols,pt1[1])

  else:
    k = (pt2[1]-pt1[1])/(1.0*(pt2[0]-pt1[0]))
    b = pt2[1] - k * pt2[0]
    ptStart = (int(-b/k),0)
    ptEnd = (int((rows-b)/k),rows)

  return ptStart, ptEnd


img = np.zeros((520, 520, 3),np.uint8)

print(img.shape) 
pt1 = (100, 320)
pt2 = (300, 100)
cv2.circle(img,pt1,5,[0,255,0],-1)
cv2.circle(img,pt2,5,[0,255,0],-1)
cv2.imshow('src',img)

ptStart,ptEnd 

猜你喜欢

转载自blog.csdn.net/stq054188/article/details/124888727