cv2 5

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

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