为什么使用openCV的简单python脚本不起作用?

时间:2019-11-18 21:46:37

标签: python opencv

因此,我发现了一个python script,对我来说非常有用。据称它将把照片分类到“模糊”或“不模糊”的文件夹中。

我非常喜欢python newb,但是我仍然使用python 3.7,numpy和openCV进行管理。我将脚本放在包含一堆.jpg图像的文件夹中,然后通过在命令提示符下键入以下内容来运行该脚本:

python C:\Users\myName\images\BlurDetection.py

尽管我运行它,但它会立即返回:

Done. Processed 0 files into 0 blurred, and 0 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))

有什么想法为什么它可能不起作用或出了什么问题?请指教。 谢谢!

2 个答案:

答案 0 :(得分:1)

您的脚本和照片在这里:

C:\Users\myName\images

但这不是您的工作目录,即Python会以这种方式返回您查找照片:

print(os.getcwd())

要使Python在正确的文件夹中查找文件,只需执行以下操作:

os.chdir('C:\Users\myName\images')

现在它将能够找到文件。

答案 1 :(得分:0)

如果目录中已经存在.jpg图片,则请检查目录中的文件夹“模糊”和“确定”。该错误可能是因为这两个文件夹已存在于列出的目录中。我运行了这段代码,它对我有用,但是当我重新运行这段代码而不删除模糊且确定的文件夹时,我遇到了相同的错误。