前言
本文实现的功能是已知图像上的两点坐标,计算并绘制图像上通过这两点的直线。
这个功能写代码时经常会用到,所以将代码整理记录一下,方便后续查找。
代码与演示
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