본문 바로가기

ML & DL/OpenCV26

[OpenCV] 9. 히스토그램 아래 내용은 파이썬으로 만드는 OpenCV 프로젝트(이세우 저) 를 공부하며 정리한 내용들입니다. 모든 소스 코드를 확인하고 싶으시다면 제일 하단의 저자 GitHub 주소를 참고하시기 바랍니다. 히스토그램(histogram)은 무엇이 몇 개 있는지 그 수를 세어 놓은 것을 그림으로 표시한 것을 말한다. 히스토그램은 영상을 분석하는 데 도움이 많이 된다. 9.1 히스토그램 계산과 표시 영상 분야에서의 히스토그램은 전체 영상에서 픽셀 값이 1인 픽셀이 몇 개이고 2인 픽셀이 몇 개이고 하는 식으로 픽셀 값이 255인 픽셀이 몇 개인지까지 세는 것을 말한다. 전체 영상에서 픽셀들의 색상이나 명암의 분포를 파악할 수 있다. OpenCV에서는 히스토그램을 계산하는 cv2.calcHist() 함수를 제공한다. cv.. 2023. 3. 2.
[OpenCV] 8. 이미지 연산 아래 내용은 파이썬으로 만드는 OpenCV 프로젝트(이세우 저) 를 공부하며 정리한 내용들입니다. 모든 소스 코드를 확인하고 싶으시다면 제일 하단의 저자 GitHub 주소를 참고하시기 바랍니다. 이미지와 영상에서 연산하는 방법을 알아보자. 연산 결과는 새로운 영상을 만들어 내므로 그 자체가 목적이 될 수도 있고, 정보를 얻기 위한 과정일 수도 있다. 8.1 영상과 영상의 연산 영상에 연산을 할 수 있는 방법은 Numpy의 브로드캐스팅 연산을 직접 적용하는 방법과 OpenCV에서 제공하는 함수를 사용하는 방법이 있다. 영상에서 한 픽셀이 가질 수 있는 값의 범위는 0~255인데, OpenCV의 함수를 사용하면 그 범위를 초과한 결과에 대해서도 안전하게 처리가 가능하다. dest = cv2.add(src1,.. 2023. 2. 27.
[OpenCV] 7. 스레시홀딩 아래 내용은 파이썬으로 만드는 OpenCV 프로젝트(이세우 저) 를 공부하며 정리한 내용들입니다.모든 소스 코드를 확인하고 싶으시다면 제일 하단의 저자 GitHub 주소를 참고하시기 바랍니다.이미지를 검은색과 흰색만으로 표현한 것을 바이너리 이미지라고 한다. 이미지에서 원하는 피사체의 모양을 좀 더 정확히 판단하기 위해서 사용한다. (예 : 종이에서 글씨만을 분리, 배경과 전경을 분리)스레시홀딩(Thresholding) : 값을 경계점을 기준으로 두 가지 부류로 나누는 것, 바이너리 이미지를 만드는 가장 대표적인 방법 7.1 전역 스레시 홀딩바이너리 이미지를 만들기 위해서 컬러 이미지를 그레이 스케일로 바꾸고 각 픽셀의 값이 경계값을 넘으면 255, 넘지 못하면 0을 지정한다.간단한 Numpy 연산만으로.. 2023. 2. 22.
[OpenCV] 6. 컬러 스페이스 아래 내용은 파이썬으로 만드는 OpenCV 프로젝트(이세우 저) 를 공부하며 정리한 내용들입니다.모든 소스 코드를 확인하고 싶으시다면 제일 하단의 저자 GitHub 주소를 참고하시기 바랍니다.영상에 색상과 명암을 표현하는 방법들, 각각의 차이 그리고 활용 방법에 대한 공부 6.1 디지털 영상의 종류디지털화된 이미지는 픽셀(pixel)이라는 단위가 여러 개 모여서 그림을 표현한다.하나의 픽셀을 어떻게 구성하느냐에 따라 이미지를 구분바이너리(binary, 이진) 이미지한 개의 픽셀을 두 가지 값으로만 표현한 이미지두 가지 값은 0과 1 또는 0과 255를 사용한다. 보통 0은 검은색 1이나 255는 흰색을 의미값으로는 명암을 표현할 수 없고, 점의 밀도로 명암을 표현영상 작업에서 피사체의 색상과 명암 정보는.. 2023. 2. 22.
[OpenCV] 5. 관심영역(ROI) 아래 내용은 파이썬으로 만드는 OpenCV 프로젝트(이세우 저) 를 공부하며 정리한 내용들입니다. 모든 소스 코드를 확인하고 싶으시다면 제일 하단의 저자 GitHub 주소를 참고하시기 바랍니다. 이미지에 어떤 연산을 적용해서 새로운 이미지나 정보를 얻어내려고 할 때, 전체 이미지를 대상으로 연산을 하는 것보다 관심이 있는 부분만 잘라내서 하는 것이 훨씬 효과적이다. 관심있는 영역만 잘라내서 연산을 하면, 연산할 데이터의 양을 줄이고 수행 시간을 단축시키는 이점 데이터의 양이 줄어 들면 그 형태도 단순해지므로 적용해야 하는 알고리즘도 단순해지는 이점 이미지 연산은 항상 좌표를 기반으로 해야 하는데, 그 영역이 클 때보다 작을 때 좌표 구하기가 쉽다는 이점 5.1 관심영역 지정 전체 이미지에서 연산과 분석의.. 2023. 2. 21.
[OpenCV] 4. 이벤트 처리 아래 내용은 파이썬으로 만드는 OpenCV 프로젝트(이세우 저) 를 공부하며 정리한 내용들입니다. 모든 소스 코드를 확인하고 싶으시다면 제일 하단의 저자 GitHub 주소를 참고하시기 바랍니다. OpenCV에는 키보드와 마우스의 입력을 이용할 수 있는 함수를 제공한다. 4.1 키보드 이벤트 cv2.waitKey(delay) : 키보드 입력 알아내는 함수 delay 인자에 밀리초 단위로 숫자를 전달 해당 시간동안 프로그램을 멈추고 대기하다가 키보드의 눌린 키에 대응하는 코드 값을 정수로 반환한다. 지정한 시간까지 키보드 입력이 없으면 -1을 반환 delay 인자에 0을 전달하면 대기 시간을 무한대로 하겠다는 의미, 키를 누를 때까지 프로그램은 멈춘다. key = cv2.waitKey(0) print(key.. 2023. 2. 15.
[OpenCV] 3. 창 관리 아래 내용은 파이썬으로 만드는 OpenCV 프로젝트(이세우 저) 를 공부하며 정리한 내용들입니다. 모든 소스 코드를 확인하고 싶으시다면 제일 하단의 저자 GitHub 주소를 참고하시기 바랍니다. OpenCV가 제공하는 창 관리 API들, 창을 열 때 사용한 이름을 기반으로 연결되는 것이 특징이다. cv2.namedWindow(title [, option]) : 이름을 갖는 창 열기 title : 창 이름, 제목 줄에 표시 option : 창 옵션, ‘cv2.WINDOW_’로 시작 cv2.WINDOW_NORMAL : 임의의 크기, 사용자 창 크기 조정 기능 cv2.WINDOW_AUTOSIZE : 이미지와 같은 크기, 창 크기 재조정 불가능 cv2.moveWindow(title, x, y) : 창 위치 이동.. 2023. 2. 14.
[OpenCV] 2. 그림, 글씨 그리기 아래 내용은 파이썬으로 만드는 OpenCV 프로젝트(이세우 저) 를 공부하며 정리한 내용들입니다. 모든 소스 코드를 확인하고 싶으시다면 제일 하단의 저자 GitHub 주소를 참고하시기 바랍니다. 그림 그리기는 객체나 얼굴을 인식해서 그 영역에 사각형을 그려서 표시 하거나 이름을 글씨로 표시 하는 등의 용도로 자주 활용 2.1 직선 그리기 cv2.line() : 직선을 그리는 함수 cv2.line(img, start, end, color [, thickness, lineType]): 직선 그리기 img : 그림 그릴 대상 이밎, Numpy 배열 start : 선 시작 지점 좌표(x, y) end : 선 끝 지점 좌표(x, ) color : 선 색상, (Blue, Green, Red), 0~255 thick.. 2023. 2. 14.
[OpenCV] 1. 이미지와 비디오 입출력 아래 내용은 파이썬으로 만드는 OpenCV 프로젝트(이세우 저) 를 공부하며 정리한 내용들입니다. 모든 소스 코드를 확인하고 싶으시다면 제일 하단의 저자 GitHub 주소를 참고하시기 바랍니다. OpenCV를 이용한 대부분의 작업은 파일로 된 이미지를 읽어서 적절한 연산을 적용하고 그 결과를 화면에 표시하거나 다른 파일로 저장하는 것들이다. 기본적으로 이미지와 비디오를 읽어올 수 있어야하고 저장을 할수있어야한다. 1.1 이미지 읽기 img = cv2.imread(file_name [, mode_flag]) : 파일로부터 이미지 읽기 file_name : 이미지 경로, 문자열 mode_flag = cv2.IMREAD_COLOR : 읽기 모드 지정 cv2.IMREAD_COLOR : 컬러(BGR) 스케일로 읽.. 2023. 2. 13.
[OpenCV] 0. CV 프로젝트 진행을 위한 OpenCV CV 프로젝트를 진행하기 위해 OpenCV를 판다!! Vision 관련 프로젝트들을 하나씩 진행할수록 OpenCV의 힘을 느낄 수 있고, 공부를 해야할 필요성을 느꼈다. 마침 강의를 듣는 교육기관에서 OpenCV 책을 지급받은 게 있고, 그 책의 평가도 좋기에 처음부터 뜯어보려고 한다. 이글을 보는 분들은 잘 알수도 있지만 아래 이름의 책이다. 파이썬으로 만드는 OPENCV 프로젝트 - 이세우 저, 프로그래밍 인사이트 한번은 책을 집중해서 보면서 필요한 코드는 따라 해보고, 두번째는 노션에 정리를 하면서 다시 한번 더 볼 예정이다. 코드는 실습을 하다가 조금씩 바꿔보기도 할 것이다. 블로그에는 공부하면서 정리한 내용들을 포스팅 해볼 예정이다! 시간이 얼마나 걸릴지 알 수 없고, 꽤 오래 걸릴것 같지만 천.. 2023. 2. 13.
[OpenCV] Error : OpenCV(4.6.0) :-1: error: (-5:Bad argument) in function 'add' 아래 내용은 제가 직접 학습하면서 경험한 에러를 해결하고, 그 방법을 정리한 내용입니다. '부족한 내용' 혹은 '잘못된 내용'이 있을 수 있습니다. 댓글 남겨주시면 더욱 공부하고 수정하도록 하겠습니다. 감사합니다. OpenCV 의 Tracker 를 사용하여 Face Tracking 프로젝트를 연습하던 중에 두가지 오류가 발생했다. 결론적으로는 둘다 같은 오류였고, 버전 차이에서 발생한 오류였다. 참고한 코드의 OpenCV version은 4.1.2 버전이었고 내가 실습한 Colab 환경의 OpenCV 버전은 4.6.0 버전이었다. 1. MultiTracker_create 연습을 참고하며 공부한 코드에서는 cv2.MultiTracker_create() 를 이용해서 MultiTracker 를 불러왔는데, m.. 2022. 12. 27.
[OpenCV] 이미지에 문자열 넣기 아래 내용들은 제가 혼자 학습하면서 정리한 내용들입니다. '부족한 내용' 혹은 '잘못된 내용'이 있을 수 있습니다. 참고 자료들은 최대한 Reference에 넣었으며 문제가 생길시 연락 부탁드립니다. 댓글 남겨주시면 더욱 공부하고 수정하도록 하겠습니다. 감사합니다. Computer Vision 관련 이미지 처리 및 딥러닝을 하다보면 이미지에 문자열을 입력해야하는 경우가 생긴다. 이때 OpenCV를 사용하여 텍스트를 입력할 수 있다. OpenCV는 Drawing Function을 통해 선이나 도형, 문자열을 넣을수 있는 기능을 제공한다. 이 중에서 putText() 라는 메소드를 이용해서 이미지에 텍스트를 입력할 수 있다. cv2.putText cv2.putText(img, text, org, fontFa.. 2022. 12. 20.