본문 바로가기

OpenCV9

[OpenCV] 그리기 함수 OpenCV 그리기 함수 - OpenCV는 영상에서 선, 도형, 문자열을 출력하는 그리기 함수를 제공한다. 선 그리기 : 직선, 화살표, 마커 등 도형 그리기 : 사각형, 원, 타원, 다각형 등 문자열 출력 - 그리기 함수 사용 시 주의할 점 그리기 알고리즘을 이용하여 영상의 픽셀 값 자체를 변경한다. -> 원본 영상이 필요하면 복사본을 만들어서 그리기 & 출력해야 한다. 그레이스케일 영상에는 컬러로 그릴 수 없다. -> cv2.cvtColor()함수로 BGR컬러 영상으로 변환한 후 그리기 함수를 호출해야 한다. 대표 함수 이름 cv2.line(img, pt1, pt2, color, thickness=None, lineType=None, shift=None) 직선 그리기 cv2.rectangle(img,.. 2023. 3. 4.
[OpenCV] cv2.VideoCapture 클래스 cv2.VideoCapture 클래스 : OpenCV에서는 카메라와 동영상으로부터 프레임(frame, 정지영상 하나)을 받아오는 작업을 cv2.VideoCapture 클래스 하나로 처리한다. 카메라 열기 cv2.VideoCapture(index, apiPreference=None) -> retval index : camera_id + domain_offset_id 시스템 기본 카메라를 기본 방법으로 열려면 index에 0을 전달한다. apiPreference : 선호하는 카메라 처리 방법을 지정한다. retval : cv2.VideoCapture 객체이다. cv2.VideoCapture.open(index, apiPreference=None) -> retval retval : camera open에 성공.. 2023. 3. 2.
[OpenCV] 마스크 연산 / ROI 마스크 연산 OpenCV는 일부 함수에 대해 ROI 연산을 지원하며, 이때 마스크 영상 (mask Image)을 인자로 함께 전달해야 한다. e.g) cv2.copyTo(), cv2.calcHist(), cv2.bitwise_or(), cv2.matchTemplate(), etc. 마스크 영상은 cv2.CV_8UC1 타입이다.(그레이스테일 영상) 마스크 영상의 픽셀 값이 0이 아닌 위치에서만 연산이 수행된다. 보통 마스크 영상으로는 0 또는 255로 구성된 이진 영상(binary image)을 사용한다. 관심 영역 (ROI) Region Of Interest 영상에서 특정 연산을 수행하고자 하는 임의의 부분 영역이다. 마스크 연산을 지원하는 픽셀 값 복사 함수 cv2.copyTo(src, mask, ds.. 2023. 3. 2.
[OpenCV] Img crop / 밝기 조절 01. CROP 여기서 img2는 참조, 즉 img1에서의 부분 영상의 메모리를 공유해서 사용되는 형태이다. img2.fill(0)을 사용하여 img2가 검정색으로 바뀌며 img1의 잘라내진 영역 또한 색이 변하는 것을 확인 가능하다. 02. 밝기 조절 # 부분 영상 처리 img = cv2.imread('lenna.bmp', cv2.IMREAD_GRAYSCALE) img_face = img[200:400, 200:400] # 얼굴 영역 cv2.add(img_face, 50, img_face) # 밝기 조절 cv2.imshow('img', img) cv2.waitKey() cv2.destroyAllWindows() cv2.add(img_face, 50, img_face)는 img_face를 주고 img_f.. 2023. 3. 2.
[OpenCV] 영상데이터 표현, 생성, 복사 1. 영상 데이터 numpy.ndarray 표현 img1 = cv2.imread('cat.bmp', cv2.IMREAD_GRAYSCALE) img2 = cv2.imread('cat.bmp', cv2.IMREAD_COLOR) 여기서 img1과 img2는 numpy.ndarray로 표현되어 있다. ndim : 차원의 수, len(img.shape)과 같다. shape : 각 차원의 크기. 그레이스케일 영상의 (h, w) 또는 컬러영상의 (h, w, 3). 컬러영상의 3은, RGB 3개의 색을 의미한다. size : 전체 원소 갯수 dtype : 원소의 데이터 타입. 영상 데이터는 대부분의 경우 uint8이다. 예를 들어, 컬러 영상이 cv2.CV_8UC3으로 표기되어 있다면, numpy.uint8, shap.. 2023. 2. 21.
[OpenCV] Matplotlib을 이용한 영상 출력 1. Matplotlib으로 컬러 영상 출력하기 OpenCV에서 불러온 컬러 영상 데이터는 BGR 순서이지만, Matplotlib은 영상 데이터의 색상 순서가 RGB라고 간주한다. 그러므로, cv2.cvtColor()함수를 이용하여 색상 순서를 변경해야 한다. 2. Matplotlib으로 그레이스케일 영상 출력하기 2023. 2. 21.
[OpenCV] 주요 함수 사용법 1. 영상 파일 불러오기 cv2.imread(filename, flags=None) -> retval filename : 불러올 영상 파일 이름(문자열) flags : 영상 파일 불러오기 옵션 플래그 - cv2.IMREAD_COLOR : BGR컬러 영상으로 읽기(기본값). shape=(rows, cols, 3) - cv2.IMREAD_GRAYSCALE : 그레이 스케일 영상으로 읽기. shape = (rows, cols) - cv2.IMREAD_UNCHANGED : 영상 파일 속성 그대로 읽기. e.g)투명한PNG파일 shape = (rows, cols, 4) retval : 불러온 영상 데이터 (numpy.ndarray) 2. 영상 파일 저장하기 cv2.imwrite(filename, img, para.. 2023. 2. 20.
[OpenCV] 기초 test pip install opencv-python # 추가 모듈 pip install opencv-contrib-python OpenCV 설치를 완료한 뒤, 샘플을 실행해보았다. 매번 사용했던 실행 방법처럼 shift + enter을 눌렀더니 error가 떠서 당황했는데, 실행창에서 디버깅없이 실행 2023. 2. 20.
[OpenCV] Computer Vision, Image Data 1. Computer Vision이란 ? 컴퓨터를 이용하여 정지 영상 또는 동영상으로부터 의미있는 정보를 추출하는 방법을 연구하는 학문 즉, 사람이 눈으로 사물을 보고 인지하는 작업을 컴퓨터가 수행하게끔 만드는 학문 2. 컴퓨터 비전 vs 영상 처리 - 영상 처리는 영상을 다루는 모든 학문과 응용을 통틀어 지칭한다. - 컴퓨터 비전은 영상 인식과 같은 고수준의 영상 처리를 지칭한다. 현재의 영상처리는, 컴퓨터 비전을 위한 전처리 작업으로 쓰인다. 3. 영상image란? 픽셀이 바둑판 모양의 격자에 나열되어 있는 형태(2차원 행렬) 픽셀 (pixel) : 영상의 기본 단위, picture element, 화소 4. 영상 데이터의 구조 w x h 영상의 시작점은 (0, 0)이다. 주의할 점은, 영상과 행렬의.. 2023. 2. 20.