[c++ opencv] 이미지서치 연산속도 향상, Template Matching 사용하기 #2 연산속도 빠르게
본문 목표 이전 포스트에서 이미지서치 Template Matching을 배웠었다. 이번에는 코딩에서 제일 중요한 연산속도 향상에 대해서 다뤄보도록 하겠다. 어떻게 하면 동일한 결과를 얻으면서도 연산속도를 빠르게 할 수 있는지 알아보자. 키워드 : 이미지서치, Template Matching, 템플릿매칭 알아볼 함수 원형 - 테플릿 매칭 ( matchTemplate ) matchTemplate(src, templ, result, 1); normalize(result, result, 0, 1, NORM_MINMAX, -1, Mat() ); minMaxLoc(result, &minVal, &maxVal, &minLoc, &maxLoc, Mat() ); matchTemplate( img, templ, resul..
2020. 10. 25.
[c++ opencv] 이미지서치 기본사용법, Template Matching 사용하기 #1 기본사용
본문 목표 OpenCV를 다루다보면 이미지서치를 사용할 때가 온다. 자율주행 시스템에서도 표지판인식, 번호판 인식에 사용하기도 하고, 컴퓨터 화면에서도 이용하기도 한다. 또한 생산 공장등에서도 사용하기도 한다. 그만큼 중요한 내용인 만큼 어떻게 사용하는지도 알아보도록 하자. 키워드 : 이미지서치, Template Matching, 템플릿매칭 알아볼 함수 원형 - 테플릿 매칭 ( matchTemplate ) matchTemplate(src, templ, result, 1); normalize(result, result, 0, 1, NORM_MINMAX, -1, Mat() ); minMaxLoc(result, &minVal, &maxVal, &minLoc, &maxLoc, Mat() ); matchTempl..
2020. 10. 25.
[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.