นี่เป็นเรื่องง่ายที่จะทำถ้าคุณสามารถเขียนใน Python นี่เป็นบทความที่ดีเกี่ยวกับการใช้แพ็คเกจการมองเห็นคอมพิวเตอร์แบบโอเพ่นซอร์สเพื่อตรวจจับความพร่ามัวของภาพรวม:
https://www.pyimagesearch.com/2015/09/07/blur-detection-with-opencv/
ต่อไปนี้เป็นสคริปต์ด่วนที่จะจัดเรียงรูปภาพเป็นไดเรกทอรีเบลอ / ok:
#
# Sorts pictures in current directory into two subdirs, blurred and ok
#
import os
import shutil
import cv2
FOCUS_THRESHOLD = 80
BLURRED_DIR = 'blurred'
OK_DIR = 'ok'
blur_count = 0
files = [f for f in os.listdir('.') if f.endswith('.jpg')]
try:
os.makedirs(BLURRED_DIR)
os.makedirs(OK_DIR)
except:
pass
for infile in files:
print('Processing file %s ...' % (infile))
cv_image = cv2.imread(infile)
# Covert to grayscale
gray = cv2.cvtColor(cv_image, cv2.COLOR_BGR2GRAY)
# Compute the Laplacian of the image and then the focus
# measure is simply the variance of the Laplacian
variance_of_laplacian = cv2.Laplacian(gray, cv2.CV_64F).var()
# If below threshold, it's blurry
if variance_of_laplacian < FOCUS_THRESHOLD:
shutil.move(infile, BLURRED_DIR)
blur_count += 1
else:
shutil.move(infile, OK_DIR)
print('Done. Processed %d files into %d blurred, and %d ok.' % (len(files), blur_count, len(files)-blur_count))
ปัญหาที่ยุ่งยากที่สุดของคุณคือติดตั้ง python และ opencv ลงในระบบของคุณ Google python3 สำหรับระบบปฏิบัติการของคุณและวิธีติดตั้ง pip ด้วยคุณสามารถใช้ pip3 เพื่อติดตั้ง opencv หรือมีการติดตั้ง python + opencv ล่วงหน้าบางส่วนเช่นกัน คุณไม่จำเป็นต้องใช้ opencv รุ่นใหม่ล่าสุดเพื่อให้สคริปต์นี้ทำงาน
สคริปต์ใช้งานได้ดีและวัดความพร่ามัวของภาพโดยรวม นี่เป็นสิ่งที่ดีสำหรับรูปภาพส่วนใหญ่ อย่างไรก็ตามการวัดภาพโดยรวมหมายถึงภาพถ่ายที่มีพื้นหลังที่เต็มไปด้วยโบเก้หนึ่งหน้าจะถูกใส่ลงในสารบบเบลอและคุณจะต้องคัดแยกออกมา อย่างไรก็ตามคุณควรผ่านภาพที่เบลอเพื่อให้แน่ใจว่าไม่มีผู้ดูแลที่ใส่ผิดที่
ฉันหวังว่าสคริปต์นี้จะเพิ่มความเร็วเวิร์กโฟลว์ของคุณ
การปรับปรุงสคริปต์นี้อย่างประณีตคือการตรวจจับใบหน้าและคำนวณความพร่ามัวของใบหน้าที่ใหญ่ที่สุดในภาพถ่ายและใช้ค่าเหล่านั้นสำหรับเกณฑ์การเบลอของภาพ ฉันจะทำให้การปรับปรุงนั้นขึ้นอยู่กับคุณ!