OpenCV에서 사용하는 좌표계를 직교 좌표계로 변환하는 예제입니다. 2023. 4. 13 최초작성 OpenCV의 좌표계는 아래 그림처럼 왼쪽 위가 (0, 0)이고 오른쪽으로 갈수록 x좌표가 증가하며 아래로 내려갈수록 y좌표가 증가합니다. 자세한 내용은 다음 포스트를 참고하세요. OpenCV Python 그리기 예제 1. OpenCV의 좌표계 https://webnautes.tistory.com/580 수학에서 접한 좌표계는 직교 좌표계로 보통 왼쪽 아래에 (0,0)이 주어지며 오른쪽으로 갈수록 x좌표가 증가하고, 위로 올라갈수록 y좌표가 증가합니다. OpenCV의 좌표계를 직교 좌표계로 변환하는 코드를 간단히 작성해봤습니다. 화면 중앙에 (0,0)이 위치하며 오른쪽으로 갈 수록 x좌표가 증가하고 위로 ..
로드한 이미지를 정사각형 이미지가 되도록 가장자리를 0으로 채워 패딩(padding)하는 OpenCV Python 예제입니다. 최소한 이미지의 최대변 길이 이상을 입력해야 정사각형 이미지로 만들어줍니다. 그 이하인 경우에는 원본 이미지를 그대로 출력합니다. 2022. 3. 6 최초작성 2022. 5. 28 이미지가 큰 경우에도 패딩하도록 수정 640 x 480 이미지를 로드하여 한변의 길이가 640인 정사각형 이미지를 출력하고 있습니다. import cv2 def padding(img, set_size): try: h,w,c = img.shape except: print('파일을 확인후 다시 시작하세요.') raise if h < w: new_width = set_size new_height = int(..
로드한 이미지를 Center Crop하는 OpenCV Python 예제입니다. 2022. 3. 6 최초작성 오른쪽 원본 이미지의 중심을 기준으로 300 x 300 이미지를 Center Crop한 이미지가 왼쪽 이미지입니다. 원본 이미지에 Center Crop한 이미지를 맞추어 보면 어느 부분인지 알 수 있습니다. import cv2 def center_crop(img, set_size): h, w, c = img.shape if set_size > min(h, w): return img crop_width = set_size crop_height = set_size mid_x, mid_y = w//2, h//2 offset_x, offset_y = crop_width//2, crop_height//2 c..
Python OpenCV에서 이미지 크기(width, height)를 가져오는 방법입니다. 2021. 11. 14 컬러 이미지의 경우에는 shape 함수를 통해 height, width, channels를 얻을 수 있습니다. import numpy as np import cv2 img = cv2.imread('apple.png', cv2.IMREAD_COLOR) print('img.shape ', img.shape) h, w, c = img.shape print('height ', h) print('width ', w) print('channel ', c) img.shape (618, 641, 3) height 618 width 641 channel 3 흑백 이미지의 경우에는 shape 함수를 통해 he..
사각형을 찾도록 MSER(Maximally Stable Extremal Regions)을 이미지에 적용한 다음 IoU(Intersection over Unit)를 사용하여 같은 영역에 중복되어 그려진 사각형을 제거해보았습니다. 테스트한 이미지에서만 사용해본 코드라 다른 이미지에서는 의도한대로 동작하지 않기 때문에 추가 작업이 필요합니다. 포스트에선 IOU값이 0.2보다 크면 사각형 내부에 사각형이 포함된 것으로 보았는데 두 사각형이 포함관계가 아니라 일부 겹쳐진 경우도 해당 될 수 있기 때문입니다. 포스트에서는 문제를 간단하게 하기 위해서 다음 이미지에서 검출되는 5개의 사각형 중, 사각형 내에 있는 작은 사각형을 제외하고 나머지 사각형을 검출하도록 했습니다. 2021. 9. 23 - 최초작성 2021...
종이에 쓴 손글씨 숫자를 인식하여 세븐 세그먼트에 출력하는 프로젝트를 만들어봤습니다. 2021. 6. 16 최초작성
로지텍 웹캠 C920 처럼 특정 웹캠의 경우 윈도우에서 OpenCV를 사용하여 웹캠으로 부터 영상을 가져오려고 하는 경우 일정시간을 기다려야 영상이 보이기 시작할 수 있습니다. 2021. 6. 10 최초작성 이 경우 벡엔드를 다음처럼 CAP_DSHOW로 지정해주면 기다림없이 바로 영상이 화면에 보입니다. 변경전 video_capture = cv2.VideoCapture(0) 변경후 video_capture = cv2.VideoCapture(0,cv2.CAP_DSHOW) Python 코드를 예시로 들었지만 C++에서도 유사한 방식으로 가능할겁니다. 참고 https://github.com/opencv/opencv/issues/17687
오픈포즈(OpenPose)를 사용하여 손가락을 인식하는 코드를 살펴봅니다.
Mat 객체에 있는 이미지 데이터를 char 배열로 옮겼다가 다시 Mat 객체로 가져오는 예제입니다. 2020. 12. 10 최초작성 #include using namespace cv; int main() { // 이미지에서 버퍼 꺼내기 Mat image = imread("1.jpg"); int width = image.cols; int height = image.rows; int bpp = image.channels(); int imagesize = width * height * bpp; uint8_t *buffer = new uint8_t[imagesize]; memcpy(buffer, image.data, imagesize); // 버퍼를 Mat에 넣어 화면에 보여주기 Mat rgb(height, ..
OpenCV에서 제공하는 샘플 중 하나인 colorization을 실행시켜 보았습니다.colorization는 흑백 사진을 컬러 사진으로 변환하는 방법입니다.