Image Processing/Cv2 8

SSIM 흑백 이미지 동영상 저장하기

제 블로그의 인기 포스트 OpenCV를 이용해서 두개의 이미지 비교하기 의 심화편 입니다. 예를 들어, 다음과 같은 영상 이 있을 때, 비디오의 ssim을 비디오로 계속 보고 싶다고 생각하면, 처음 이미지를 기준으로 잡고, 그 이미지를 바탕으로 계속 그 차이를 표시할 수 있습니다. 원봉 영상 diff import cv2 from skimage.metrics import structural_similarity as ssim import numpy as np cap = cv2.VideoCapture('thisvideo.mp4') w, h = round(cap.get(3)), round(cap.get(4)) orig_img, grayA = None, None fps = 0 # 코덱값 fourcc = cv2.V..

python opencv 를 이용해서 동영상에서 이미지 추출 (이미지에서 동영상)

먼저 opencv를 설치합니다. >>> pip install opencv-python #For python 2.x >>> pip3 install opencv-python #For python 3.x >>> conda install opencv-python #If you directly install in anaconda with all dependencies. 다음은 비디오에서 이미지를 추출하는 방법입니다. 레퍼런스에서는 없었지만 디렉토리 안에서 모든 파일들의 이미지들을 비디오에서 추출할 수 있게 만들었습니다. import cv2 import os pwd = os.getcwd() print(pwd) print(os.listdir(pwd)) files = os.listdir(pwd) def getFrame..

opencv waitkey 설명

참고 url: https://stackoverflow.com/questions/51143458/difference-in-output-with-waitkey0-and-waitkey1/51143586#:~:text=waitKey(0)%20will%20pause%20your,from%20your%20webcam%20using%20cap. https://m.blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=chandong83&logNo=221613235354 opencv를 이용해서 script를 짜던 중, waitKey(1)를 넣었을때는 작동하던 코드가 이걸 빼니깐 작동하지 않는 걸 발견하였습니다. 궁금해서 찾아보니, waitKey(0)은 새로운 input이 들..

opencv 를 이용해서 rtsp 동영상 받기(ft. multithreading)

opencv를 이용해서 rtsp를 이용해서 영상을 받고, 그 영상을 display하는 코드 입니다. import os os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = "rtsp_transport;udp" import numpy as np import cv2 as cv cap = cv.VideoCapture('rtsp://192.168.0.2:8554/') while cap.isOpened(): ret, frame = cap.read() # if frame is read correctly ret is True if not ret: print("Can't receive frame (stream end?). Exiting ...") break cv.imshow('frame',..

(opencv) 두 이미지의 차이를 박스로 나타내기

저번 포스트에서 walkaroundthedevelop.tistory.com/56 어떻게 하면 두 이미지의 차이를 알 수 있는지에 대해서 알아보았습니다. 그럼 두 개의 이미지를 이용해서 차이를 표시해낼 수 있을까요? 일단 두 개의 이미지를 사용해서 얻어낸 diff를 디스플레이 해 봅시다. 두 개의 이미지에다가 diff를 구하면, 이렇게 됩니다. 이 diff를 보면, 포스트잇을 붙인 곳이 검은색으로 된 것을 볼 수 있습니다. # 이전 포스트에서 diff 가져옴! thresh = cv2.threshold(diff, 100, 255, cv2.THRESH_BINARY_INV)[1] # get contours cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, c..

OpenCV를 이용해서 두 개의 이미지 비교하기 (SSIM)

레퍼런스 : ourcodeworld.com/articles/read/991/how-to-calculate-the-structural-similarity-index-ssim-between-two-images-with-python opencv를 이용해서 두 개의 이미지를 비교하는 방법에 대해서 알아보겠습니다. # Usage: # # python3 script.py -f original.png -s modified.png # Based on: https://github.com/mostafaGwely/Structural-Similarity-Index-SSIM- # 1. Import the necessary packages #from skimage.measure import compare_ssim as ssim ..

Cv2 를 이용해서 multiple 이미지 crop하고 나머지 mask 하기

저번시간의 심화 입니다. 만약 crop하고 싶은 roi가 한 개가 아니면 어떡할까요? import numpy as np import cv2 image = cv2.imread('download.jpg') mask = np.zeros((image.shape[0], image.shape[1])) # roi 정리 시작 roi = "0,0,300,0,300,300,0,300_300,300,600,300,600,600,300,600" roi_list = roi.split("_") print(roi_list) croplist = [] for r in roi_list: crop = [] cl = r.split(",") for i in range(0, len(cl), 2): crop.append([int(cl[i]), ..

Cv2 를 이용해서 이미지 crop하고 나머지 mask 하기

이미지 프로세싱을 하다보면 cropping을 할 때가 종종 있습니다. cropping이란, 잘라내는 걸 뜻합니다. 그럼 큰 사이즈의 이미지가 작은 사이즈가 되는, 잘라지기가 시행됩니다. import numpy as np import cv2 image = cv2.imread('download.jpg') y=0 x=0 h=500 w=500 crop = image[y:y+h, x:x+w] cv2.imshow('Image', crop) cv2.waitKey(0) ~ 하지만 이걸 사이즈를 그대로 유지한 채, 그 부분의 이미지만 보이고, 나머지 부분은 mask, 즉, 검은색으로 칠하는 건 어떻게 할 수 있을까요? 이런 식의 cropping은 특정한 부위에서만 이미지 프로세싱이 필요할 때 필요합니다 import nu..