Image Processing 11

Laplacian Method를 이용해 Blurry Image detect 하기!

input_video.mp4를 이용해서, 얼마나 Blurry 한지를 파악하고, 이를 이용해서 blurry를 detect하는 스크립트를 소개하도록 하겠습니다. 기본적인 원리는, 샤프한 이미지일수록, edge가 잘 define되어있고, blurry 한 이미지일 수록 그렇지 못하다는 점에 착안하여, variance of laplacian 의 값을 찾아서, 그 laplacian 값이 낮을 수록 더 blurry한 이미지라는 사실을 이용하는 것입니다. 이를 이용해서, 더 높은 화질의 이미지를 구할수 있을 것으로 보입니다. 물론 Threshold 값에 대해서는 여러 번 실험을 통해서 최적의 값을 구해야겠죠? reference : https://theailearner.com/2021/10/30/blur-detectio..

Image Processing 2023.05.31

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

pycocotools를 이용해 masking하기!

pycocotools를 통해서 masking을 하는 방법을 알아보도록 하겠습니다. 주피터 노트북에서의 파일을 준비하는 과정입니다. coco 포맷은 yolo 포맷과는 달리 segmentation이 있기 때문에 bounding box가 아닌 masking이 가능한 것 같습니다. 1. COCO Dataset 사용 준비하기 %matplotlib inline from pycocotools.coco import COCO import numpy as np import skimage.io as io import matplotlib.pyplot as plt import pylab # pylab.rcParams['figure.figsize'] = (8.0, 10.0) dataDir='.' dataType='val2017'..

Image Processing 2022.08.08

여러 개의 (multiple) RTSP 서버 세팅

안녕하세요 여러개의 RTSP 서버의 세팅을 알아보도록 하겠습니다. 제가 아는 분께서는 Wowza Server를 많이 사용하시는데, 이는 유료 서비스이기도 하고, 30일간의 체험 기간이 있긴 하지만 사용에 그렇게 용이하진 않다고 생각이 듭니다. 그래서 무료로 합법적으로 알려드리는 RTSP 서버, 바로 RTSP_SIMPLE_SERVER 입니다. git repository 주소 : https://github.com/aler9/rtsp-simple-server 사실 git을 다운받을 필요는 없고, release 주소에서 다운받으셔서 실행하시면 좋을 것 같습니다. https://github.com/aler9/rtsp-simple-server/releases 사실 맥을 사용해서 맥에서 사용을 해봤는데, 특성상 OS..

Image Processing 2022.04.26

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]), ..