지난 게시물에서는 위 사진과 같이 이미지 틀을 canny 알고리즘을 이용하여 추출해 보았습니다.
이번 포스팅에서는 위와 같이 출력해보겠습니다.
이번 포스팅에서는 위와 같이 출력해보겠습니다.
hough_line함수 중 hough_lines아래에 print(hough_lines)을 추가하고 값이 어떤 형식으로 받는 것인지 확인 하셨어요.[x1, y1, x2, y2]의 형태로 점 2개가 리턴 하시네요.이를 이용하여 hough_line을 그리다 드리면 되는 거죠.background_img=np.zeros(img.shape[0], img.shape[1], 3), np.uint8)#직선을 그리는 검은 화상을 생성합니다.def draw_hough_lines(img, lines, color=[0, 0, 255], thickness=2):for line in lines:for x1, y1, x2, y2 in line:cv2.line(img,(x1, y1),(x2, y2), color, thickness)BGR[0, 0, 255]빨간색으로(x1, y1, x2, y2)에선을 그려줍니다.thickness는 선의 굵기를 의미합니다.

상기 소스 코드를 동일하게 작성한 경우 프로그램을 실행했을 때 위와 같이 출력됩니다.
잘 실행되고 있는 중에…None 타입의 에러가 뜨네요…print(하프라인)를 확인해보니 화상상에 하프라인이 생성되지 않았을 때, 하프라인 함수가 None을 리턴하는 것 같습니다.리턴된 None에서는 이미지 상에 직선을 그릴 수 없기 때문에 None의 경우 직선을 그리지 않아도 되겠네요!
잘 실행되고 있는 중에…None 타입의 에러가 뜨네요…print(하프라인)를 확인해보니 화상상에 하프라인이 생성되지 않았을 때, 하프라인 함수가 None을 리턴하는 것 같습니다.리턴된 None에서는 이미지 상에 직선을 그릴 수 없기 때문에 None의 경우 직선을 그리지 않아도 되겠네요!
중간에 직선이 인식되지 않았는데 오류 메시지가 뜨지 않아요.해결이 됐는데… 뭔가 아쉽네요.왼쪽 원본 이미지와 오른쪽 hough 이미지를 맞춰보겠습니다.
————-=cv2로 cv2import numpy를 가져옵니다.VideoCapture(-1)def ROI_img(img, 정점):mask=np.zeros_like(img)cv2.fillPoly(마스크, 정점,[255, 255, 255])poly=cv2.bitwise_and(img, rho, theta, treshold, min_line_len, max_line_gap):houg2의 반환 값. HoughLinesP(img, rho, theta, threshold, np.array([]), min_line_len, max_line, gap)background_img=np.draw(img.shape[0], img.shape[1], 3), np.uint8)if(np.all(houg_lins)==True):draw_haugh_lines(background_drawebackbackgroug, y2 in line:cv2.line(img,(x1, y1),(x2, y2), color, thickness)def weighted_img(init_img, added_img, 1.0, 0.0)while(cap.isOpen():ret, frame=cap.readif(ret):높이, 폭=프레임을 갚겠습니다.shape[:2]img=cv2.cvtColor(프레임, cv2).COLOR_BGR2GRAY)img=cv2.Gaussian Blur(img,(3, 3, 0)img=cv2.Canny(img, 70, 210)=np.array([[(0, height/2-50),(width, height/2-50),(0, height/2+50)], np.int32)img=ROI_img(img, 정점)houh_lines=houh_line(img, 1, np.pi/180,50,50,50,30)maging_img=weighted_img(flinescvimmed_mag.release()cv2.destroyAllWindows()———————————————————————————————————————————————————cv2.addWeighted(init_img, 1.0, added_img, 1.0, 0.0)#(이미지 1, 이미지 1비율, 이미지 2, 이미지 2비율, 가중치)frame(라즈베리카메라로받아오는 이미지)과hough_lines(검출된 직선이그려진 이미지)를합친 코드입니다.결과는 아래와같아요.
전보다 더 직관적으로 바뀌었네요.

기존 동영상에 hough line을 그릴 수 있도록 cap코드를 조금 바꿔봤습니다.(test.mp4 동영상 파일은 해당 소스 파일과 동일한 경로에 위치한 상태여야 합니다.)
잘 검출되네요.. rc카 트럭에는 차선이 없어서 트럭 가드레일을 보고 가야하는데 어떻게 처리해야할지..

눈치 빠른 분들은 이미 알고 계셨겠지만 라즈베리 파이포스팅 시리즈는 자율주행 rc카를 만들기 위한 여정을 기록한 포스팅입니다.이번 테스트를 통해 현재 rc카 자율주행 가능성을 조금이나마 확인한 것 같은데 부족함도 많아 보이네요.