[C++ opencv] 허프변환 원 검출하는 방법, HoughCircles
본문 목표 영상처리에 있어서 원을 검출할 상황이 종종 발생한다. 이런 경우에 허프변환을 이용하여 원을 검출해낼 수 있다. OpenCV에서 어떻게 허프변환을 이용하여 원을 검출할 수 있는지 알아보자. 키워드 : HoughCircles 알아볼 함수 원형 - 허프변환 원 검출 ( HoughCircles ) vector circles; HoughCircles(img_houghC, circles, HOUGH_GRADIENT, 1, 100, 50, 35, 0, 0); HoughCircles( src, dst, method, dp, min_dist, parameter1, parameter2, min_Radius, max_Radius) ○ src : 입력할 이미지 변수, grayscale 의 이미지를 입력해야 함 ○ ..
2020. 7. 29.
[C++ opencv] 허프변환과 확률을 이용한 직선 검출하기, HoughLinesP
본문 목표 영상처리에 있어서 직선 검출이 필요한 상황이 있다. 이런 경우에 허프변환을 통해서 직선을 검출할 수 있는데, 여기에 확률을 더해서 계산할 수 있다. 기존의 허프변환 방식은 하나하나 다 해보느라 시간이 오래 걸리는 방식이었다면 확률을 이용하여 직선인 것들만 구하므로 보다 빠르다. 허프변환에 확률을 적용한 직선검출을 OpenCV 에서는 어떻게 사용하는지 알아보자. 키워드 : Hough transform line, HoughLinesP 알아볼 함수 원형 - 확률적용 허프변환 직선검출 ( HoughLinesP ) vector linesP; HoughLinesP(img_canny, linesP, 1, (CV_PI / 180), 50, 50, 10); HoughLines( src, dst, rho, th..
2020. 7. 29.
[C++ opencv] 허프변환을 이용하여 직선 검출하기, HoughLines
본문 목표 영상처리에 있어서 직선 검출이 필요한 상황이 있다. 이런 경우에 허프변환을 통해서 직선을 검출할 수 있는데, OpenCV 에서는 어떻게 사용하는지 알아보자. 키워드 : Hough transform Line 알아볼 함수 원형 - 허프변환 직선 검출 ( HoughLines ) Mat img = imread("lane.png"); Mat img_gray; cvtColor(img, img_gray, COLOR_BGR2GRAY); Mat img_canny; Canny(img_gray, img_canny, 150, 255); vector lines; HoughLines(img_canny, lines, 1, CV_PI / 180, 150); Mat img_hough; img.copyTo(img_hough)..
2020. 7. 29.
[C++ opencv] 이미지의 pixel 데이터 접근하기, 색상 정보 확인하기
본문 목표 영상처리를 하다보면 영상의 pixel 데이터를 확인해봐야 할 때가 생기기 마련이다. OpenCV에서는 어떻게 pixel 데이터를 확인할 수 있는지 알아보자. 키워드 : at, ptr, data 알아볼 함수 원형 Mat::at - 행렬 좌표로 픽셀 데이터 접근 ( img.at(row, col) ) for (int row = 0; row < img.rows; row++) { for (int col = 0; col < img.cols; col++) { uchar b = img.at(row, col)[0]; uchar g = img.at(row, col)[1]; uchar r = img.at(row, col)[2]; printf("\t (%d, %d, %d)", r, g, b); } cout
2020. 7. 28.
[C++ opencv] 관심영역 Region of Interest (RoI) 사용 방법
본문 목표 영상처리에서 가장 중요한 것은 정확성과 처리속도라고 할 수 있다. 정확성을 높이기 위해서는 관찰하려는 대상에 초점이 맞춰져 있어야한다. 원하는 피사체(대상)를 따로 분리하여 영상처리를 하고 싶은 경우 사용하는 방법이 '관심영역 설정'이다. 영어로는 RoI(Region of Interest) 라고 부른다. 키워드 : rect, RoI 알아볼 함수 원형 - 관심영역 ( Roi ) Mat img = imread("Lenna.png", 1); Mat img_roi_1, img_roi_2; img_roi_1 = img(Rect(200, 200, 100, 100)); img_roi_2 = img(Rect(Point(300, 200),Point( 400, 300))); src( Rect( x, y, wid..
2020. 7. 21.
[C++ opencv] 이미지에 원 그리기, circle( )
본문 목표 이미지를 처리함에 있어서 사용자가 확인할 수 있어야 쉽게 코드를 개발할 수 있다. 원을 표현해야하는 경우 어떻게 원을 이미지에 그려넣을 수 있는지 알아보자. 키워드 : circle( ) 알아볼 함수 원형 - 원 그리기 ( circle ) Mat img = imread("lane.png", 1); Mat img_circle; img.copyTo(img_circle); circle(img_circle, Point(500, 100), 50, Scalar(255, 0, 255), 1, 8, 0); circle(img_circle, Point(100, 100), 100, Scalar(255,0,0), 1, 4, 0); circle(img_circle, Point(200, 300), 70, Scalar:..
2020. 7. 21.
[C++ opencv] 이미지에 사각형 그리기, rectangle( )
본문 목표 이미지를 처리함에 있어서 사용자가 확인할 수 있어야 쉽게 코드를 개발할 수 있다. 사각형을 표현해야하는 경우 어떻게 사각형을 이미지에 그려넣을 수 있는지 알아보자. 키워드 : rectangle( ) 알아볼 함수 원형 - 사각형 그리기 ( rectangle ) Mat img = imread("lane.png", 1); Mat img_rectangle; img.copyTo(img_rectangle); rectangle(img_rectangle, Rect(Point(200, 200), Point(300, 300)), Scalar(0, 0, 255), 1, 8, 0); rectangle(img_rectangle, Rect(400, 400, 100, 100), Scalar(0, 0, 255), 1, 8..
2020. 7. 21.
[C++ opencv] 이미지에 선, 직선 그리기
본문 목표 이미지를 처리함에 있어서 사용자가 확인할 수 있어야 쉽게 코드를 개발할 수 있다. 직선을 표현해야하는 경우 어떻게 직선을 이미지에 그려넣을 수 있는지 알아보자. 키워드 : line() 알아볼 함수 원형 - 함수 기능 ( Function Name ) Mat img = imread("lane.png", 0); Mat img_line; img.copyTo(img_line); line(img_line, Point(200, 200), Point(200, 300), Scalar::all(255), 1, 8, 0); line(img_line, Point(200, 200), Point(200, 100), Scalar(105,200,100), 1, 8, 0); line( Input Output Array, p..
2020. 7. 21.