
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..

OpenCV Python에서 화질 손실을 최소화하여 이미지를 확대하기 위해 Super Resolution을 사용하는 방법을 소개하고 있습니다. 2022. 11. 5 최초작성 2022. 11. 6 최종작성 OpenCV에선 미리 학습된 Super Resolution 딥러닝 모델을 사용하여 이미지를 확대할 수 있는 방법을 제공합니다. 본 포스팅에서는 실제 사용하는 방법을 소개합니다. 1. 우선 contrib 모듈이 포함된 OpenCV를 설치해야 합니다. 기존에 opencv-python 패키지를 설치한적이 있다면 삭제하고 설치하세요. pip list 명령으로 설치된 패키지 목록을 확인할 수 있습니다. pip install opencv-contrib-python 2. 미리 학습되어 배포되고 있는 모델을 다운로드합..

Onvif Rtsp Server를 사용하여 동영상 파일을 RTSP 스트리밍하는 방법을 다루고 있습니다. 2022. 11. 17 최초작성 1. 아래 링크에서 Onvif Rtsp Server for Windows X64를 다운로드 합니다. https://www.happytimesoft.com/download.html 2. 압축을 풀은 후, 원하는 동영상 파일을 폴더에 복사해줍니다. 3. OnvifRtspServer.exe를 실행합니다. 명령 프롬프트 창이 뜨면서 다음처럼 사용 가능한 RTSP 주소를 보여줍니다. 여기에선 동영상 파일을 사용할 것이기 때문에 아래 표시된 주소를 다음처럼 수정해주면 됩니다. rtsp://192.168.25.16/ rtsp://admin:admin@192.168.25.16/1.mp..
fps를 화면에 표시해주고 동영상 파일로 저장하면서 webcam 영상을 보여주는 OpenCV C++ 예제 코드입니다. 저장된 동영상 파일이 빠르게 재생되는 문제가 없습니다. 2022. 1. 3 최초작성 #include #include using namespace std; using namespace cv; int main(int argc, char* argv[]) { cv::VideoCapture cap(0); if (!cap.isOpened()) { std::cout

OpenCV의 트랙바를 사용하여 Aspect Ratio를 시각화해봅니다. 트랙바는 실수를 지원하지 않기 때문에 변화되는 값을 배열에 저장한 후, 트랙바를 움직여 얻은 값을 배열의 인덱스로 사용했습니다. 2023. 10. 9 최초작성 실행결과입니다. aspect ratio가 1이면 정사각형이 되며, aspect ratio가 1보다 작으면 세로로 긴 사각형, aspect ratio가 1보다 크면 가로로 긴 사각형이 됩니다. 아래 이미지에서 왼쪽은 aspect ratio가 0.3인 경우이며, 중앙은 aspect ratio가 1.0인 경우이며 오른쪽은 aspect ratio가 2.0인 경우입니다. 전체 소스코드입니다. import cv2 import numpy as np def change_value(v): g..

4분할로 웹캠 또는 동영상을 보여주는 OpenCV C++ 예제 코드입니다. 2021. 12. 4 – 최초작성 초기화면 또는 0을 누른 경우에는 4개의 영상을 4분할로 보여주며 1 ~ 4 사이 숫자 누르면 영상 1개씩 전체화면으로 보여줍니다. 테스트에 사용한 영상을 캡처한 결과입니다. 요청 있을시 이미지를 삭제하도록 하겠습니다. 전체 소스 코드입니다. #include "opencv2/opencv.hpp" #include "iostream" using namespace std; using namespace cv; int main() { VideoCapture camera1("1.mp4"); if (!camera1.isOpened()) { cout

이미지를 세로 방향으로 연결하는 vconcat 함수와 이미지를 가로 방향으로 연결하는 hconcat 함수 예제입니다. 2022. 11. 3 최초작성 vconcat 이미지를 세로 방향으으로 연결하는 vconcat 함수 예제입니다. 이미지의 너비가 똑같아야 합니다. import cv2 img1 = cv2.imread('apple.png') img2 = img1.copy() # 이미지를 복사하여 사용합니다. # 세로방향으로 이미지를 연결합니다. 리스트에 이미지를 추가하여 2개 이상 연결할 수 있습니다. img = cv2.vconcat([img1, img2]) cv2.imshow('img', img) cv2.waitKey(0) hconcat 이미지를 가로 방향으으로 연결하는 hconcat 함수 예제입니다. 이미..