XFeat를 사용하여 월리를 찾아봤습니다. 2024. 12. 17 최초작성여러번 시행 착오 끝에 월리를 찾기는 했지만 만족스럽지는 않네요. xfeat.match_xfeat 함수의 top_k를 조정한 끝에 월리를 찾았기 때문입니다.또 맘에 안드는건 원본 이미지에서 월리를 잘라서 사용해야 했어요. 다른 장면이라도 잘찾아주는 Yolo가 정말 뛰어나구나 새삼 느꼈답니다. XFeat 설치 방법은 다음 포스트를 참고하세요 SIFT와 XFeat 사용해보기https://webnautes.tistory.com/2360테스트에 사용한 코드입니다. import numpy as npimport osimport torchimport tqdmimport cv2import matplotlib.pyplot as pltimport ..
두 장의 이미지의 투명도를 조정하여 두 개의 이미지가 겹쳐보이게 하는 블렌딩(Blending)을 구현한 OpenCV Python 예제 코드를 테스트하기 쉽도록 pyQt5로 작성된 UI를 사용합니다. 2024. 8. 28 최초작성 OpenCV Python만을 사용하여 구현한 코드는 아래 포스트에서 구현되어 있습니다. OpenCV Python 강좌 - 두 개의 이미지 더하기, 블렌딩https://webnautes.tistory.com/1245pyQt5를 사용하여 이미지의 투명도를 조정하게 만든 예제를 실행시키면 슬라이더를 사용하여 두 장의 이미지의 투명도를 조정할 수 있습니다.실행하면 두 장의 이미지가 겹쳐서 보이게 됩니다. 2장의 이미지의 투명도가 각각 50%이기 때문입니다. 어느 한쪽으로 이동하면 ..
카메라가 빨리 움직일때 SIFT보다 성능이 우수하다고 하는 XFeat를 사용해봤습니다. 지금은 이미지 테스트만 진행한 상황이며 실시간 테스트는 조만간 해보겠습니다. 2024. 7. 28 최초작성2024. 7. 28 실시간 테스트를 추가했습니다. 참고https://github.com/verlab/accelerated_features https://docs.opencv.org/4.x/dc/dc3/tutorial_py_matcher.html다음 포스트에 나온대로 conda 환경을 구성후 하는게 좋습니다. Visual Studio Code와 Miniconda를 사용한 Python 개발 환경 만들기( Windows, Ubuntu, WSL2)https://webnautes.tistory.com/1842이제 XF..
OpenCV에서 CUDA를 사용해봅니다. 2024. 6. 29 최초작성허프 변환을 GPU와 CPU에서 실행한 시간을 측정한 결과입니다. GPU를 사용했을때 짧은 시간이 걸리는 것을 볼 수 있습니다. CPU 허프 변환 시간 : 0.031784772872924805 secondsGPU 허프 변환 시간 : 0.003282308578491211 seconds테스트에 사용한 전체 코드입니다. OpenCV에서 CUDA를 사용하도록 컴파일을 하는 것이 필요합니다. 다음 포스트를 참고하세요. Ubuntu 22.04에 CUDA 사용하는 OpenCV 설치하는 방법https://webnautes.tistory.com/1876import cv2import numpy as npimport time# 큰 이미지를 사용해야 G..
OpenCV에서 제공하는 Tracker를 사용한 Tracking 예제입니다. 2024. 5. 23 최초작성https://youtu.be/rswSdXN1KUw import cv2import time# 카메라 장치 열기. 윈도우/리눅스에선 0을 사용하고 맥북에선 1을 사용합니다.cap = cv2.VideoCapture(1) # 웹캠 초기화 시간을 고려하여 딜레이를 줍니다.time.sleep(1)# 트래커 객체를 생성합니다.tracker = cv2.TrackerKCF_create()# 첫 프레임 읽어옵니다.ret, frame = cap.read()if not ret: print("프레임을 읽을 수 없습니다.") cap.release() cv2.destroyAllWindows() exi..
OpenCV Python 마우스 이벤트 예제입니다.최초작성 2024. 5. 16마우스 커서를 움직여서 왼쪽 마우스 버튼을 누르면 해당 위치에 초록색점이 찍히고 터미널에 좌표가 출력됩니다. 터미널에 초록색 점에 해당되는 좌표가 출력됩니다. (x,y)=(167, 132)(x,y)=(352, 283)전체 소스코드입니다. import cv2import numpy as npimport queuedef mouse_callback(event, x, y, flags, param): # 마우스 왼쪽 버튼 클릭시만 감지합니다. if event == cv2.EVENT_LBUTTONDOWN: print(f'(x,y)=({x}, {y})') # 마우스 커서 좌표를 큐에 삽입합니다. ..
두 점 사이의 각도 구하는 OpenCV Python 예제 코드입니다.2024. 4. 25 최초작성 실행결과는 유튜브 영상을 참고하세요.https://youtu.be/T2InIT7b7_U?si=gxb6zTbeT8164cap 두 점 사이의 각도는 아래 그림처럼 표시됩니다.이미지 출처 https://stackoverflow.com/questions/28226833/get-angle-in-terms-of-360-degrees영상에서 사용한 전체 코드입니다. import cv2import numpy as npimport queueimport math# 마우스 이벤트를 캡처합니다.def mouse_callback(event, x, y, flags, param): # 왼쪽 마우스 버튼 클릭 이벤트를 캡처..
영상 파일을 이미지 파일로 변경한 것을 다시 영상 파일로 바꿀 필요가 있어서 코드를 작성해보았습니다. 2023. 2. 14 최초작성 2024. 4. 20 동영상 파일을 일련 번호 붙인 이미지 파일로 저장하는 것은 다음 포스트를 참고하세요. OpenCV Python - 동영상 파일을 일련번호 붙은 이미지 파일로 저장하기 https://webnautes.tistory.com/2323 일련 번호 붙은 이미지 파일을 동영상 파일로 다시 바꾸어봅니다. import cv2 import os def get_files(path): for root, subdirs, files in os.walk(path): list_files = [] if len(files) > 0: for f in files: fullpath = r..
동영상 파일을 일련번호 붙은 이미지 파일로 저장하는 OpenCV Python 예제입니다. 2024. 4. 20 최초작성 import os import shutil import cv2 save_dir = './img' response = 'y' # 디렉토리가 존재하는지 체크 if os.path.exists(save_dir): # 디렉토리를 지울지 물어봄 response = input(f'{save_dir} 디렉토리가 존재합니다. 삭제하고 새로 생성하시겠습니까? (y/n): ') if response.lower() == 'y': # 디렉토리 삭제 shutil.rmtree(save_dir) print(f'{save_dir} 디렉토리가 삭제되었습니다.') else: print('종료합니다.') exit(0) #..
검은색 빈공간을 채우는 OpenCV Python 예제입니다. 2024. 4. 17 최초 작성 실행 결과입니다. 왼쪽 원본 이미지에 보이는 검은색 공백들이 메꿔진 결과가 오른쪽 결과 이미지에 보입니다. 전체 코드입니다. import cv2 def fill_internal_areas(image_array): # 그레이스케일로 변환합니다. gray = cv2.cvtColor(image_array, cv2.COLOR_BGR2GRAY) # 컨투어를 찾습니다. contours, hierarchy = cv2.findContours(gray, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_SIMPLE) if contours and hierarchy is not None: for idx, contour in..