sbt-idp/cope2n-ai-fi/common/utils/blurry_detection.py

36 lines
884 B
Python
Raw Permalink Normal View History

2023-11-30 11:22:16 +00:00
import cv2
import urllib
import numpy as np
class BlurryDetection:
def __init__(self):
# initialize the detector
pass
def variance_of_laplacian(self, image):
# compute the Laplacian of the image and then return the focus
# measure, which is simply the variance of the Laplacian
return cv2.Laplacian(image, cv2.CV_64F).var()
def __call__(self, img, thr=100):
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
fm = self.variance_of_laplacian(gray)
if fm >= thr:
return "non_blurry", fm
else:
return "blurry", fm
detector = BlurryDetection()
def check_blur(image_url):
req = urllib.request.urlopen(image_url)
arr = np.asarray(bytearray(req.read()), dtype=np.uint8)
img = cv2.imdecode(arr, -1)
pred = detector(img, thr=10)
score = pred[0]
return score