36 lines
884 B
Python
Executable File
36 lines
884 B
Python
Executable File
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
|