반응형

OpenCV/OpenCV 강좌 120

OpenCV Python 강좌 - 동영상의 배경 제거하고 움직이는 물체 검출 하기 ( Background Subtraction )

동영상의 배경을 제거하고 움직이는 물체를 검출하는 데 사용할 수 있는 Background Subtraction 예제 입니다. OpenCV에서 제공하는 Background Subtraction 알고리즘 중 하나인 createBackgroundSubtractorKNN를 사용하여 테스트를 진행해봤습니다. 2018. 9. 22 최초작성 2023. 12. 10 최종작성 - 박스를 하나로 묶어주는 코드 추가 OpenCV Python - Background Subtraction 테스트 영상 https://youtu.be/_nUCgbOCUPw import cv2 import numpy as np import os, time def get_points(box): x, y, w, h = box return [(x, y),..

OpenCV 빌드 후 ModuleNotFoundError: No module named 'cv2' 에러 해결

OpenCV 빌드하여 설치 후 Python에서 cv 모듈을 로드시 다음 에러가 발생한 경우 해결한 방법입니다. ModuleNotFoundError: No module named 'cv2' 상황에 따라선 다른 방법이 필요할 수도 있습니다. 2022. 11. 25 최초작성 2022. 11. 26 우선 cv2 모듈 파일 위치를 찾았습니다. find /usr | grep cv2 명령으로 검색하여 다음처럼 찾았습니다. /usr/local/lib/python3.8/site-packages/cv2.cpython-38-x86_64-linux-gnu.so 다음처럼 복사해주고 나서 해결되었습니다. 파이썬마다 라이브러리 모듈을 찾을데 검색되는 디폴트로 사용하는 dist-packages 디렉토리 위치가 다른데 엉뚱한 곳에 복..

IOU Python 예제 코드

IOU(Intersection over union) Python 예제 코드입니다. 2023. 6. 13 최초작성 코드에서 사용할 경계상자 정보입니다. box1 = (0, 0, 100, 100) # x,y,w,h box2 = (0, 0, 50, 50) # x,y,w,h box3 = (150, 150, 50, 50) # x,y,w,h box1과 box2의 관계부터 살펴봅니다. IOU는 두 경계 집합의 교집합 면적과 두 경계 집합의 합집합 면적의 비율을 구합니다. box1과 box2의 IOU를 구합니다. box1과 box2의 교집합 면적은 box2의 면적이고 box1과 box2의 합집합의 면적은 box1의 면적입니다. 즉, 50*50 / 100*100 = 2500 / 10000 = 0.25 입니다. box1에..

OpenCV 강좌 C++ & Python - 원을 그리는 circle 함수 사용법

OpenCV 의 원을 그리는 circle 함수를 C++과 Python에서 사용하는 방법을 설명합니다. 2015. 1. 2 - 최초 작성 2018. 7. 16 2019. 7. 17 2019. 8. 11 - C++ 코드 추가 2023. 4. 17 circle 함수는 다음과 같은 파라미터를 가집니다. cv.circle( img, 원이 그려질 이미지 center, 원의 중심 좌표 ( x, y ) radius, 원의 반지름 color, 원의 선 색 또는 원을 채울 색( B, G, R ) thickness, 선굵기(디폴트값 1) lineType, 디폴트값 cv.LINE_8(=8-connected line) shift ) 디폴트값 0 반지름 100, 선굵기 1인 빨간색 원 안에 파란색으로 채워진 반지름 10인 원을 ..

OpenCV 좌표계 변환( Top Left ↔ Bottom Left )

OpenCV에서 사용하는 Top Left를 원점으로 하는 좌표와 Bottom Left를 원점으로 하는 좌표 사이에 변환을 하는 예제 입니다. 2023. 4. 29 최초작성 원점을 Bottom Left로 바꾼 후, 모서리 4군데의 좌표를 출력했습니다. 전체 코드입니다. convert_coordinate 함수를 사용하여 원점이 TOP LEFT인 좌표계와 원점이 BOTTOM LEFT인 좌표계를 서로 변환할 수 있습니다. 아래 코드에서는 원점이 BOTTOM RIGHT인 좌표를 원점이 TOP LEFT인 좌표로 변환하여 화면에 원과 좌표를 출력합니다. import cv2 import numpy as np # TOP LEFT BOTTOM LEFT def convert_coordinate(x,y): x = x y = ..

Homography matrix를 이용한 planar rectification - OpenCV Python 예제

Homography matrix를 이용한 planar rectification를 C++로 구현한 다음 포스트의 내용을 파이썬 버전으로 만들어봤습니다. 이론적인 배경은 해당 포스트를 읽어보세요. Homography matrix를 이용한 planar rectification를 구현 예제 https://webnautes.tistory.com/2121 2023. 7. 1 최초작성 테스트 결과와 코드는 영상에서 확인하세요. https://youtu.be/8lVeReZmNK0 테스트에 사용한 이미지입니다.

Homography matrix를 이용한 planar rectification를 구현 예제

4개의 대응점을 이용하여 Homography matrix를 구한 후, planar rectification를 구현해본 결과입니다. 1. 구현 알고리즘 2. 실행 결과 3. 전체 소스 코드 1. 구현 알고리즘 리차드 하틀리의 Multiple view geometry in computer vision의 4.1에 소개된 알고리즘을 구현했습니다. 여기에서 풀어야 하는 문제는 4개의 대응되는 점이 주어질 때, 를 만족하는 매트릭스 H를 구하는 것입니다. 하나의 대응점에 대한 관계식인 를 다음처럼 풀어 적을 수 있습니다. 4개의 대응점에 관계식을 이용하면 Homograpy matrix H를 구할 수 있습니다. 이를 위해 대응점 4개에 대한 관계식을 다음처럼 하나로 모아야합니다. H를 구하려면 매트릭스 A에 대한 S..

주사위 눈 개수 세는 OpenCV Python 예제 - 웹캡 영상 사용

다음 포스트에 있는 주사위 눈 개수 세는 OpenCV Python 예제를 웹캠 영상에서 테스트해본 결과입니다. 주사위 눈 개수 세는 OpenCV Python 예제 https://webnautes.tistory.com/2107 2023. 5. 29 최초작성 테스트 결과입니다. https://youtu.be/GHNIXuXUgrM 사용한 전체 소스코드입니다. import cv2 import numpy as np def lab_equalizer(img, new_channel): lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB) l,a,b = cv2.split(lab) merged_lab = cv2.merge((new_channel,a,b)) bgr_img = cv2.cvtColor(m..

주사위 눈 개수 세는 OpenCV Python 예제

주사위 눈 개수를 세는 OpenCV Pytrhon 예제 코드입니다. 깃허브에서 오래전에 발견했던 코드를 수정했습니다. 주사위 눈을 세는 부분을 공유안해주셨지만 힌트가 포함되어 있어서 다행히 동작하도록 수정했네요. https://github.com/arnavdutta/OpenCV-Contours-Hierarchy/blob/master/OpenCV_Contours.ipynb 2023. 5. 28 최초작성 이진화 실행 결과입니다. 주사위 눈 검출 결과입니다. 주사위마다 표시된 빨간색 숫자는 눈의 개수이며 보라색 작은 숫자들은 검출된 컨투어의 인덱스 입니다. 왼쪽위에 표시된 28은 주사위 전체 눈 개수입니다. 전체 소스 코드입니다. import cv2 import numpy as np image = cv2.im..

반응형