Хорошо, я хочу сделать программу для обнаружения линии из потока камеры. Это для последовательного робота. Поэтому, если робот знает угол двух параллельных линий, он знает, в каком направлении он должен ехать.Hough transform line follower
Я выполняю функции последующие:
- Сделать кадр серый
- Гауссово размывание
- Канни край
- Хаф преобразования
Первое не в том, что при наличии нет линии, программа завершается. (также при наличии нескольких строк).
Я не знаю, как это решить.
Кроме того, я хочу получить угол линии (линий). И я хочу, чтобы получить расстояние от 2-х параллельных линий (и знать ведьму-линии параллельны)
Вот мой очень простой код, я содержу большинство примеров в Интернете:
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
ret = cap.set(3,640)
ret = cap.set(4,480)
while True:
ret, frame = cap.read()
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
gauss = cv2.GaussianBlur(gray,(3,3),0)
edges = cv2.Canny(gray,0,150,apertureSize = 3)
lines = cv2.HoughLines(edges,1,np.pi/180,50)
for rho,theta in lines[0]:
a = np.cos(theta)
b = np.sin(theta)
x0 = a*rho
y0 = b*rho
x1 = int(x0 + 1000*(-b))
y1 = int(y0 + 1000*(a))
x2 = int(x0 - 1000*(-b))
y2 = int(y0 - 1000*(a))
cv2.line(frame,(x1,y1),(x2,y2),(0,0,255),2)
cv2.imshow('frame',edges)
cv2.imshow('frame',frame)