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 함수 예제입니다. 이미..
웹캠 / 비디오 파일에서 가져온 이미지에 fps 표시하여 화면에 출력하는 OpenCV Python 예제 코드입니다. 2022. 03. 06 최초작성 2023. 09. 10 웹캠/비디오 파일을 성공적으로 열었는지 여부를 체크 # 참고 # https://github.com/dgseten/bad-cv-tfm/blob/2ada9b71f85aa5eb75c1f4a039cb14d697ee2f69/tools/video/video-player-wait-fps.py # https://stackoverflow.com/a/65146731 import cv2 import time # 이미지에 텍스트를 출력하는 함수 def draw_text(img, text, x, y): font = cv2.FONT_HERSHEY_SIMPLEX..
applyColorMap를 사용하여 OpenCV Python에서 HeatMap을 흉내내는 예제코드입니다. 2023. 9. 10 최초작성 배열에 가상으로 값을 넣어서 출력해본 결과입니다. 배열에 있는 값이 높을 수록 검은색 < 빨간색 < 노란색으로 보입니다. 전체 코드입니다. import cv2 import numpy as np # 가상으로 점유 정보가 저장된 2차원 배열을 생성합니다. # OpenCV의 컬러맵 함수는 8비트 이미지를 사용하므로 0-255 범위로 설정합니다. 필요시 값의 범위를 조정해야합니다. occupancy_counts = np.array([[0,0,0,0,0,0,0,0,0,0], [0,10,10,10,10,10,10,10,10,0], [0,0,0,0,0,0,0,0,110,0], [0,..
RTSP 재접속 및 비디오 다시 재생하는 코드를 OpenCV로 간단히 구현해봤습니다. 2022. 10. 27 최초작성 import cv2 import time try_num = 1 program_quit = False # 두개의 루프를 사용합니다. # 바깥 루프는 RTSP 재접속 시도 및 비디오 다시 재생하는 루프이고 # 안쪽 루프는 이미지를 가져와 화면에 보여주는 루프입니다. while True: # 시도한 횟수를 출력합니다. print(f'try {try_num}') # 0 대신에 RTSP URL 이나 비디오 파일 이름으로 대체하면 됩니다. cap = cv2.VideoCapture(0) # 이미지를 가져옵니다. ret,img_color = cap.read() if ret == False: try_nu..
이번 포스팅에서는 OpenCV Python의 좌표계와 그리기 함수를 사용하기 전에 알아야 하는 개념에 대해서 설명합니다. 2015. 1. 2 - 최초 작성 2023. 4. 13 - 최종작성 관련 포스트 OpenCV 좌표계를 직교 좌표계로 변환하는 Python 코드 https://webnautes.tistory.com/1812 OpenCV 좌표계 변환( Top Left ↔ Bottom Left ) https://webnautes.tistory.com/1815 OpenCV Python에서는 좌표를 튜플로 나타냅니다. 튜플의 첫번째 원소가 x 좌표, 두번째 원소가 y좌표입니다. ( x , y ) 이미지의 왼쪽 위가 원점 (0,0)입니다. 오른쪽으로 갈수록 x값이 증가하고 아래쪽으로 갈수록 y 값이 증가합니다...