warpAffine함수를 사용하여 이미지를 이동 및 회전하는 방법을 다루고 있습니다. 마지막 업데이트 - 2018. 10. 3 다음 OpenCV Python 튜토리얼을 참고하여 강좌를 비정기적로 포스팅하고 있습니다. https://docs.opencv.org/3.4.3/d6/d00/tutorial_py_root.html translation matrix를 사용하여 x축 방향 및 y축 방향으로 이미지를 이동시킵니다. rotation matrix를 사용하여 이미지를 회전시킵니다. OpenCV의 getRotationMatrix2D 함수는 배율 및 회전 중심 좌표가 추가된 rotation matrix를 사용합니다. 테스트에 사용한 전체 코드입니다. import numpy as np import cv2 # 원본 ..
이미지의 투명도를 조정하여 두 개의 이미지가 겹쳐보이게 하는 블렌딩(Blending)을 다룹니다. 마지막 업데이트 - 2018. 9. 18 다음 OpenCV Python 튜토리얼을 참고하여 강좌를 비정기적로 포스팅하고 있습니다. https://docs.opencv.org/3.4.3/d6/d00/tutorial_py_root.html 상수 α와 β로 이미지의 투명도를 조정하여 두 이미지가 겹쳐보이게 만듭니다. 상수가 0.0이면 투명한 상태가 되며 1.0에 가까워질수록 불투명해집니다. import cv2 as cv a = 0.0 while(a
깃허브에 있는 차선인식 파이썬 코드를 C++로 변환후 분석해 본 결과물입니다. 원본 코드 https://github.com/georgesung/road_lane_line_detection/blob/master/lane_lines.py 최초 작성 - 2018. 9. 17 2019. 3. 21 Visual Studio 2017에 gls 라이브러리를 추가하는 방법, OpenCV C API 부분 수정 리눅스에서 작업한 결과입니다. 리눅스에서 gls 라이브러리 추가하는 방법은 소스코드 상단에 있습니다.Visual Studio 2017에서는 아래 링크를 참고하여 진행하세요. Visual Studio 2017에서 GLS(GNU Scientific Library) 사용하기https://webnautes.tistory...
이미지를 채널별 이미지로 분리하는 방법과 채널별 이미지를 합치는 방법을 설명합니다. 마지막 업데이트 - 2018. 9. 14 다음 OpenCV Python 튜토리얼을 참고하여 강좌를 비정기적로 포스팅하고 있습니다. https://docs.opencv.org/3.4.3/d6/d00/tutorial_py_root.html 이미지를 불러오면 Blue, Green, Red 채널을 가진 BGR 이미지가 됩니다. split 함수를 사용하여 색 채널별로 분리하여 출력해보겠습니다. import cv2 img_color = cv2.imread('Billiard.jpg', cv2.IMREAD_COLOR ) img_b,img_g,img_r = cv2.split(img_color) cv2.imshow("BGR", img_co..
OpenCV Python에서 이미지의 개별 픽셀에 접근하여 값을 읽어오거나 변경하는 방법을 다루고 있습니다. 마지막 업데이트 - 2018. 9. 13 다음 OpenCV Python 튜토리얼을 참고하여 강좌를 비정기적로 포스팅하고 있습니다. https://docs.opencv.org/3.4.3/d6/d00/tutorial_py_root.html 다음 이미지의 픽셀값을 읽어오고 수정하는 예제입니다. 픽셀 단위로 r, g, b 값을 한번에 가져오고 한번에 설정합니다.. import cv2 as cv img = cv.imread('test.png') # (y, x) = (50, 50) 좌표의 픽셀값을 읽어오면 [153 43 36]입니다. 좌표 순서가 y, x 순인 것에 유의하세요. # 픽셀값은 [blue, gr..
이전 포스팅에서 다루었던 이미지에서 도형을 검출하는 예제 코드를 웹캠 기반으로 수정하여 테스트해 본 과정을 설명합니다. OpenCV 사용해서 실시간으로 도형 검출하기(shape detection) 1 / 2 - 이미지에서 검출http://webnautes.tistory.com/1097 OpenCV 사용해서 실시간으로 도형 검출하기(shape detection) 2 / 2 - 웹캠에서 검출 2016. 12. 29 최초 작성2018. 6. 30 도형 판정하는 방법 변경( 내각 체크 → Convex polygon 여부 검사 ) webcam으로 테스트 추가 프린트한 이미지에 있는 도형들을 검출해본 테스트 결과입니다. 이전 포스팅에서 사용했던 도형 검출 코드를 수정하여 웹캠에서 가져온 이미지를 사용하도록 했습니다..
이진화시킨 이미지에서 findContours함수를 사용하여 contour를 찾은 후, approxPolyDP 함수를 사용하여 다각형(polygon)을 검출하는 예제입니다. OpenCV 사용해서 실시간으로 도형 검출하기(shape detection) 1 / 2 - 이미지에서 검출 OpenCV 사용해서 실시간으로 도형 검출하기(shape detection) 2 / 2 - 웹캠에서 검출 http://webnautes.tistory.com/1193 2016. 12. 29 최초 작성2018. 6. 30 도형 판정하는 방법 변경( 내각 체크 → Convex polygon 여부 검사 ) webcam으로 테스트 추가 1-1. 다음 테스트용 이미지를 저장하여 OpenCV를 위한 프로젝트 폴더에 넣습니다. 사각형, 육각형..
아래 유튜브 영상에 본 포스팅을 개선한 내용이 포함되어 있습니다. 최종업데이트 - 2018. 6. 10 OpenCV를 이용하여 카메라로부터 캡쳐되는 영상은 BGR 영상입니다. RGB가 아니라 BGR이라고 부르는 것은 Blue, Green, Red 순으로 한 픽셀이 구성되기 때문입니다. 코드에서는 HSV 영상으로 변환한 후, 영상에서 원하는 색을 분리하고 있습니다.HSV 영상에서 Hue 성분은 다음처럼 특정 색의 컬러가 일정한 범위를 갖기 때문에 분리해내기가 쉽습니다. 이미지 출처 : https://www.dreamstime.com/stock-illustration-color-colors-wheel-names-degrees-rgb-hsb-hsv-hue-image78027630 참고 [2]에 따르면 cvtC..
OpenCV에서 투명한 부분이 포함되어 있는 이미지(transparent image)를 다른 이미지 또는 영상에 오버레이하는 방법을 찾아봤습니다. http://jepsonsblog.blogspot.kr/2012/10/overlay-transparent-image-in-opencv.html 에서 소개하고 있는 overlayImage 함수를 사용하면 간단히 해결됩니다. 이걸 가지고 뭐할 수 있을 까 고민하다가 사람 얼굴에 안경을 오버레이 해보았습니다.원본 이미지로 다음 두 장의 이미지를 사용했습니다. 각각 다음 링크에서 다운로드 가능합니다. https://pixabay.com/ko/초상화-여자-얼굴-여성-여자-얼굴-아름-다운-여자-얼굴-2159177/ https://pixabay.com/ko/안경-액자-종범..
웹캠으로부터 캡처된 영상에 일련번호를 붙여서 이미지 파일로 저장하는 예제입니다. sprintf 함수를 사용하여 img_000000.jpg ~ img_999999.jpg 까지 이미지 파일 이름을 생성하는 방법을 사용하였습니다. 더 많은 이미지 파일을 저장하려면 %6d 부분을 수정하면 됩니다. sprintf( buf, "img_%06d.jpg", index); img_999999.jpg까지 저장하면 다시 img_000000.jpg 파일 이름으로 저장하도록 작성되었습니다. 실행결과 저장된 이미지파일들입니다. 사용한 코드는 다음과 같습니다. #include #include using namespace cv; using namespace std; int main(int, char**) { int index = 0..