OpenCV Python을 사용하여 깊이 이미지 depthmap을 화면에 보여주는 예제코드입니다. 2023. 8. 6 최초작성 코드에서는 다음 링크에 있는 depthmap 파일을 다운로드하여 사용했습니다. https://github.com/unclearness/pyrgbd/blob/master/data/cmu_panoptic/171026_cello3/depth_00000.png 실행해보면 다음처럼 보입니다. 깊이 이미지에 대응하는 컬러 이미지는 다음과 같습니다. 출처 – https://github.com/unclearness/pyrgbd/blob/master/data/cmu_panoptic/171026_cello3/color_00000.png 테스트에 사용한 코드입니다. import cv2 import ..
Ubuntu에서 C++과 Python을 위해 빌드된 OpenCV의 빌드 정보를 확인하는 방법을 다룹니다. 윈도우에서도 동일한 코드로 확인이 가능합니다. 2023. 1. 9 최초작성 Python $ python3 Python 3.10.6 (main, Nov 14 2022, 16:10:14) [GCC 11.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 >>> print(cv2.getBuildInformation()) General configuration for OpenCV 4.6.0 ===================================== Version contro..
CLAHE (Contrast Limited Adaptive Histogram Equalization) 파이썬 예제 코드입니다. 출처 https://stackoverflow.com/questions/24341114/simple-illumination-correction-in-images-opencv-c 2022. 11. 3 최초작성 import cv2 import numpy as np img = cv2.imread('test.jpeg') h,w,c = img.shape img = cv2.resize(img, ((w//4, h//4))) lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(..
유사하거나 중복 사진을 찾아주는 파이썬 예제 코드입니다. 아래 링크에 있는 코드를 수정하여 사용했습니다. https://github.com/cw-somil/Duplicate-Remover 2022. 11. 16 최초작성 from PIL import Image import imagehash import cv2 import os import numpy as np class DuplicateRemover: def __init__(self, hash_size = 256, similarity= 80): self.hash_size = hash_size self.similarity = similarity def get_hash(self, filename): img = cv2.imread(filename) img = ..
이미지에서 텍스트 영역을 찾아주는 OpenCV Python의 MSER 예제입니다. 최초작성 2020. 12. 23 import cv2 import os import numpy as np path = os.path.dirname(os.path.realpath(__file__)) + "/f.jpg" img = cv2.imread(path) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray = cv2.GaussianBlur(gray,(5, 5),0) mser = cv2.MSER_create() regions,_ = mser.detectRegions(gray) clone = img.copy() hulls = [cv2.convexHull(p.reshape(-1, 1, 2))..
webcam에서 가져온 영상을 mp4로 저장하는 OpenCV Python 예제입니다. 2022. 3. 30 최초작성 # 참고 # https://github.com/dgseten/bad-cv-tfm/blob/2ada9b71f85aa5eb75c1f4a039cb14d697ee2f69/tools/video/video-player-wait-fps.py # https://stackoverflow.com/a/65146731 # https://stackoverflow.com/a/41666642 import cv2 import time import os # 이미지에 텍스트를 출력하는 함수 def draw_text(img, text, x, y): font = cv2.FONT_HERSHEY_SIMPLEX font_scale..
warpPerspective 함수를 사용하여 퍼스펙티브 변환(Perspective Transformation)을 구현합니다. 퍼스펙티브 변환에서 원본 이미지의 모든 직선은 출력 이미지에서 직선으로 유지됩니다. 퍼스펙티브 변환 행렬을 찾으려면 입력 이미지의 4점과 대응하는 출력 이미지의 4점이 필요합니다. getPerspectiveTransform 함수를 사용하면 대응하는 4점 쌍에 대한 변환 행렬을 구할 수 있습니다. warpPerspective 함수를 사용하여 변환을 실행합니다. 마지막 업데이트 - 2018. 10. 4 다음 순서대로 책의 모서리를 클릭합니다. 클릭한 책 모서리에 빨간점이 찍히게 됩니다. 스페이스바를 누르면 정면에서 바라본 책의 이미지로 변환된 이미지가 보입니다. 테스트에 사용한 원본 ..
warpAffine함수를 사용하여 이미지를 이동 및 회전하는 방법을 다루고 있습니다. 마지막 업데이트 - 2018. 10. 3 translation matrix를 사용하여 x축 방향 및 y축 방향으로 이미지를 이동시킵니다. rotation matrix를 사용하여 이미지를 회전시킵니다. OpenCV의 getRotationMatrix2D 함수는 배율 및 회전 중심 좌표가 추가된 rotation matrix를 사용합니다. 테스트에 사용한 전체 코드입니다. import numpy as np import cv2 # 원본 이미지 img_source = cv2.imread('cat.jpg') cv2.imshow("original", img_source) cv2.waitKey(0) # 이미지 이동 height, wid..
resize() 함수를 사용하여 이미지를 확대 및 축소하는 방법을 다루고 있습니다. 2018. 10. 3 최초 작성 2023. 2. 14 제목 변경 이미지 확대 또는 축소시 사용할 보간법(interpolation methods) 지정해줄 수 있습니다. 지정해주지 않았을 때 디폴트값은 cv2.INTER_LINEAR입니다. 이미지 확대할때에는 cv2.INTER_CUBIC 또는 cv2.INTER_LINEAR을 권장합니다. cv2.INTER_CUBIC을 사용하면 좀더 선명한 이미지를 얻을 수 있지만 처리속도가 상대적으로 느립니다. 동영상을 처리하거나 큰 이미지를 처리할 때에 체감이 될듯합니다. 이미지를 축소할때에는 cv.INTER_AREA를 권장합니다. 테스트에 사용한 전체 코드입니다. import cv2 # ..
OpenCV에서 cudacodec 사용하도록 빌드하는 방법을 다룹니다. 2022. 12. 18 최초작성 OpenCV를 빌드하는 하는 방법은 아래 포스트를 참고하세요. 본 포스트에서는 추가로 작업해야 하는 부분만 소개합니다. Ubuntu 22.04에 CUDA 사용하는 OpenCV 설치하는 방법 https://webnautes.tistory.com/1876 위 포스트대로 CUDA를 사용하도록 OpenCV를 빌드하려고 해도 디폴트로 cudacodec가 비활성화 되어있기 때문에 cudacodec 사용시 throw_no_cuda 에러가 발생합니다. 왜냐하면 필요한 nvcuvid 모듈을 사용하려면 NVIDIA Video Codec SDK가 필요하기 때문입니다. self.video = cv2.cudacodec.cre..