cv2

    [OpenCV] imshow 창설정 및 종료 처리 (x버튼 처리).

    창 설정 cv2.namedWindow를 통해 미리 창에 대한 title을 지정하여 놓을 수 있음. cv2.namedWindow('image', cv2.WINDOW_NORMAL) # Using resizeWindow() : Below code does not works with cv2.WINDOW_AUTOSIZE # cv2.resizeWindow("image", 300, 700) cv2.WINDOW_AUTOSIZE가 기본으로 2nd argument없이 호출시 선택됨. 읽어들이는 image 크기에 맞춰 window의 크기가 결정됨. cv2.WINDOW_NORMAL로 설정시 window의 크기를 조정가능함.(마우스로 window의 크기를 조절할 수 있음) cv2.WINDOW_GUI_EXPANDED로 설정시 확..

    [OpenCV] Desired Data Type : ddtype

    OpenCV에서 filter등의 함수에서 주로 등장하는 ddtype parameter는 결과 image의 data type을 의미한다. desired data type이라고도 불리고 이를 줄여서 ddtype라고 기재하는데, 일반적으로 input image와 같은 data type을 유지하도록 -1을 사용하는 경우가 많다. 이 방식은 대부분 큰 문제가 없지만, gradient나 laplacian을 구하는 filter 연산의 경우, 음수값을 결과로 가질 수 있는데 OpenCV에서 image를 나타내기 위해 사용하는 기본 데이터 타입이 np.uint8 (or cv2.CV_8U)이기 때문에 -1로 ddtype를 지정할 경우 문제가 발생한다. 이는 음수를 고려하지 않은 cv2.CV_8U는 음수값의 gradient..

    openCV : cv2.waitKey bug

    아래 글은 WSL2에서 WSLg의 버전이 낮을 경우 발생함. WSL에서의 2022.10 당시 위의 문제를 해결한 상태임. 다음 글 참조. https://bme808.blogspot.com/2022/10/cv2waitkey-wsl.html cv2.waitkey 가 wsl에서 잘 안동작하던 문제 해결. 결론부터 애기하면, wslg version이 낮아서 발생한 문제였음. WSLg 버전이 1.0.45 로 업그레이드하면 해당 에러는 해결됨. 설치를 위해선 Windows Subsystem for Linux Preview 설치(MS store... bme808.blogspot.com 업그레이드를 할 수 없는 경우라면 다음을 참고(근원적인 해결이 아닌 순간적인 모면책에 불과함). WSL2에서 openCV를 이용한 간..

    [DIP] opencv : Region of Interest (ROI) :

    cv2.selectROI가 아닌 이벤트 핸들러(MouseCallback)를 이용한 구현임. x button (or close button)을 지원하기 위한 구현을 추가한 것이며, 여러 윈도우를 띄우는 경우엔 메인 윈도우가 닫히는 경우, 다른 윈도우들도 같이 닫히도록 처리하는 처리가 필요하여 `\text{pyautogui}`패키지를 이용하여 처리함. import cv2 import numpy as np import pyautogui is_dragging = False x0,y0 = -1,-1 w0,h0 = -1,-1 red = (0,0,255) def onMouse(event, x, y, flags, param): global is_dragging global x0,y0,w0,h0 if event == c..

    [DIP] opencv : Region of Interest (ROI) : cv2.selectROI

    cv2에서 사각형의 ROI를 선택하는 가장 쉬운 방법. ret_val = cv2.selectROI([window_name], img [, showCrossHair=True, fromCenter=False] window_name : ROI 선택을 수행할 window이름. str img : 보여질 이미지. showCrossHair : ROI 중심에 십자모양 표시 여부 fromCenter : 마우스 시작지점을 영역의 중심으로 간주 ret_val = (x,y,w,h) of ROI 선택시 `space` or `Enter` 를 누르면 됨. 선택을 취소하고 싶을 경우 c키 누름 : ret_val는 모두 0으로 import cv2 import numpy as np img_path = 'lena.png' img = cv..

    [OpenCV] cvtColor

    OpenCV의 경우, 다양한 color space를 지원함. result_img = cv2.cvtColor(src_img, conversion_flag) 위와 같은 code를 통해 src_img를 다른 color space의 이미지(실제로는 numpy의 ndarray) result_img로 변경할 수 있음. conversion_flag는 매우 다양하지만, 주로 사용하는 건 다음과 같음. cv2.COLOR_BGR2GRAY : BGR(Blue, Green, Red)을 Gray-scale image로 cv2.COLOR_BGR2RGB : opencv는 BGR이 기본인지라, matplotlib나 PIL과 같이 쓰려면 RGB로 바꾸어야 함. cv2.COLOR_BGR2HSV : BGR을 색의 종류를 한 채널(Hue)..