import cv2 import numpy as np Digital Image 디지털 이미지는 2차원 행렬의 형태로 표현이 된다. 행과 열로 이루어진 격자를 pixel라고 하며, pixel로 이루어진 이미지를 bitmap image라고 한다. 각 pixel의 위치는 영상좌표와 행렬 위치, 2가지로 표현할 수 있다. 좌상단 꼭짓점을 중심으로 영상좌표는 (y, x)로 표현하고, 행렬위치는 (row, column)로 표현한다. OpenCV 에서는 영상좌표와 행렬 위치, 2가지 형태가 사용되기 때문에 유의해야 한다. Binary Image Binary Image 는 픽셀당 1bit로 표현하는 이미지를 의미한다. 오직 흰색(1)과 검은색(0)으로만 표현이 된다. Binary Image를 만드는 방법에는 두 가지가..
opencv 검색 결과
이미지 비트연산 이미지는 AND, NOT, OR, XOR 의 비트연산이 가능하다. 이미지 비트연산은 이미지에서 특정 영역을 추출하거나 직사각형 모양이 아닌 ROI를 정의할 때, 이미지에서 바탕을 제거하고 2개의 이미지를 합칠 때에 유용하게 사용할 수 있다. 이때, 중요한 것은 비트 연산할 이미지의 크기가 동일해야 한다는 것이다. def bitOperation_black_bg(hpos, vpos): img1 = cv2.imread('iceland-1979445_1280.jpg') img2 = cv2.imread('opencv_logo.png') rows, cols, channels = img2.shape roi = img1[ vpos:vpos + rows, hpos:hpos + cols ] img2gray..
캐스케이드 분류기는 Object Detection이 가능한 OpenCV의 대표적인 API이다. 초기에는 얼굴 인식을 위한 목적으로 만들어졌고, 최근에는 대부분의 물체 인식까지 가능하다. OpenCV는 얼굴 인식에 대해 훈련된 데이터(haarcascade)를 XML 형태로 제공한다. OpenCV의 sources/data/haarcascades 폴더 내에 포함된 파일로 얼굴 인식이 가능하다. Haarcasacade를 이용한 얼굴 인식 import cv2 import numpy as np img = cv2.imread('faces.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Cascade 분류기 생성 cascade = cv2.CascadeClassifier('..
import matplotlib.pyplot as plt import numpy as np import cv2 def bgr_to_rgb(imgfile): b, g, r = cv2.split(imgfile) imgfile = cv2.merge([r, g, b]) return imgfile 이미지 더하기 두개의 이미지를 더하는 데는 2가지 방법이 있다. 하나는 + operator를 사용하여 연산하는 방법과 다른 하나는 opencv의 add함수를 사용하는 것이다. 두 방법 모두 서로 다른 이미지를 더하지만 더하는 방식에는 그 차이가 있다. img1 + img2 우리가 opencv의 imread 함수로 이미지를 불러들였을 때, 그 이미지가 numpy array의 형식을 가지고 있으므로 img1과 img2를 더..
import cv2 import numpy as np 이미지 속성 1. img.shape : 이미지 해상도 및 채널 수 (height, width, channel), (행, 열, 채널) 2. img.size : 이미지 크기 (byte 단위) 3. img.dtype : 이미지 데이터 타입 img = cv2.imread('bald-eagle-5463386_1280.jpg') print(img.shape) print(img.size) print(img.dtype) cv2.imshow('Show Image', img) cv2.waitKey(0) cv2.destroyAllWindows() 이미지 픽셀 값 얻고 수정해보기 한 장의 이미지는 지정된 크기의 BGR 값들의 배열로 이루어져 있다. 예를들어 10 * 10 ..
import cv2 import numpy as np 트랙바 만들기 cv2.createTrackbar(trackbarName, windowName, value, count, onChange) cv2.createTrackbar('B', 'color_palette', 0, 255, onChange) 이 함수는 트랙바를 지정된 윈도우에 생성하는 함수이다. 1. trackbarName : 트랙바 이름 2. windowName : 윈도우 이름 3. value : 트랙바 시작 값 4. count : 트랙바 끝 값 5. onChange : 트랙바 이벤트 발생시 수행되는 TrackbarCallback 콜백함수 TrackbarCallback :: def onChange(x) createTrackbar 함수에서 마지막 인..
특징을 나타내는 값을 매칭하기 위해서는 회전이나 크기 등에 영향이 없어야 하며, 이를 위해서는 feature descriptor(특징 디스크립터)가 필요하다. 특징 디스크립터는 keypoint의 주변의 밝기나 색상 등의 정보를 표현한 것으로, keypoint의 주변 픽셀을 일정한 크기로 나눈 후 각 영역에 대한 pixel의 그래디언트를 계산한 것이 된다. 특징 디스크립터를 활용한 검출기의 종류는 다음과 같다. ORB(Oriented FAST and Roteted BRIEF) FAST 코너 검출기와 BRIEF의 회전이 고려되도록 한 것 SIFT(Scale Invariant Feature Transform) 크기 변화에 관계없이 특징 검출이 이루어지도록 한 것 SURF(Speed Up Robust Featu..
import cv2 import numpy as np import math from random import shuffle 도형그리기 캔버스 만들기 img = np.full((512, 512, 3), 255, np.uint8) 도형을 그리기 위한 공간을 생성한다. 위 코드는 (512, 512, 3)의 크기에 255라는 값으로 채워진 numpy array를 생성하는 코드이다. 데이터 타입은 uint8(0~255의 정수)이다. 여기서 배열을 채우는 값이 단일 상수로 되어있으면 흑백의 binary 값으로 인식하여 0이면 검은색, 255이면 흰색으로 채워지게 되고, (0, 0, 255)처럼 3개의 요소를 가진 벡터로 되어있으면 BGR 값으로 인식하여 해당 색으로 값이 채워지게 된다. cv2.line(img, p..
import cv2 import numpy as np 카메라로 영상 재생 cv2.VideoCapture(0) → 객체생성 cv2.VideoCapture(0) 함수를 사용해 VideoCapture 객체를 생성한다. VideoCapture의 인자로는 ★장치 인덱스(어떤 카메라를 사용할 것인지, PC에 웹캠이 2개인 경우 첫번째 웹캠은 0, 두번째 웹캠은 1로 지정할 수 있다.) 또는 비디오 파일 이름을 지정한다. def showVideo(): try: print("카메라를 구동합니다.") cap = cv2.VideoCapture(0) except: print("카메라 구동 실패") return cap.set(3, 1280) cap.set(4, 720) while True: ret, frame = cap.re..
import cv2 import numpy as np 이미지 읽기 cv2.imread(filename [, flag]) img = cv2.imread(filename, cv2.IMREAD_COLOR) 첫번째 인자에는 이미지 파일을, 두번째 인자에는 이미지 파일을 읽는 방식을 나타내는 플래그를 나타냄. flag는 대표적으로 3가지를 자주 사용함 1. cv2.IMREAD_COLOR : 컬러이미지 로드, 이미지의 투명한 부분(알파채널)은 모두 무시됨. 디폴트 플래그로 정수값은 1 2. cv2.IMREAD_GRAYSCALE : 흑백이미지 로드. 정수값은 0 3. cv2.IMREAD_UNCHANGED : 알파채널을 포함하여 이미지 '그대로' 로드. 정수값은 -1 cv::ImreadModes 참고 cv2.imsho..
최근댓글