Python 检测并选择文件夹中的非黑色图像
我目前正在从事一个媒体项目。我们拍摄了Loong短片,如果不是黑色的话,主要是黑色的。我已经将这些剪辑分解为它们的帧(>500k单帧),并将它们放在一些文件夹中。现在,我的目标是找出并选择那些不是黑色或主要是黑色的帧:大约占总数的1000 这似乎是一个简单的Python脚本可以轻松处理的工作。我知道scikit图像在处理图像时非常常见,但我不知道如何编写一个脚本来巧妙地完成这项工作。我在科学编程方面有一些经验,但在图像处理方面有点超出我的领域 例如,因此被忽略,而,虽然在光线较暗的情况下,应保持良好 理想情况下,最好有一个使用一个或多个标准来确定图像是否完全暗的脚本,在后一种情况下,将其放入另一个文件夹中供人(me)检查Python 检测并选择文件夹中的非黑色图像,python,python-3.x,image-processing,scikit-image,Python,Python 3.x,Image Processing,Scikit Image,我目前正在从事一个媒体项目。我们拍摄了Loong短片,如果不是黑色的话,主要是黑色的。我已经将这些剪辑分解为它们的帧(>500k单帧),并将它们放在一些文件夹中。现在,我的目标是找出并选择那些不是黑色或主要是黑色的帧:大约占总数的1000 这似乎是一个简单的Python脚本可以轻松处理的工作。我知道scikit图像在处理图像时非常常见,但我不知道如何编写一个脚本来巧妙地完成这项工作。我在科学编程方面有一些经验,但在图像处理方面有点超出我的领域 例如,因此被忽略,而,虽然在光线较暗的情况下,应保持
非常感谢您的帮助 您可能需要使用PIL(Python图像库) 我快速搜索了计算图像平均值的代码,发现了以下代码片段: 也许你可以遍历文件夹中的所有图像,并记录(或复制)高于某个特定值的图像 也许有一种更优雅的方法可以使用PIL来实现这一点,但也许这会让您开始
希望有帮助 Opencv足以解决这个问题
使用
np.mean(图像,轴=2)
获得不同通道的平均值,然后您可以轻松地检查黑色通道。如回复中所述,获取图像的“平均值”有助于提高效率。读入图像后,我计算np.mean(img,axis=2).mean()
,得到三个颜色通道的平均值。如果此平均值较低(您可以非常简单地获得每个图像的平均值,而无需使用适用于Windows、Linux和macOS的ImageMagick编写任何代码
像这样:
magick identify -format '%[fx:mean*255] %f\r\n' black.jpg
1.01936 black.jpg
以及:
为了提高性能,我会在macOS或Linux上使用GNU Parallel,但在Windows中,我会为每个目录打开一个新的命令提示符并并行运行几个脚本,或者启动一个脚本处理以0或1结尾的所有文件,第二个脚本处理以2或3结尾的文件,第三个脚本处理以4,5 o结尾的文件R6和最后一个处理以7、8或9结尾的文件
如果我使用Python,我会使用一个多处理池来加快速度。你使用什么操作系统?请你将你的图像添加到你的问题中,这样我们就可以访问-目前它们是密码保护的。谢谢。Windows,修复了链接。你为什么不在Microsoft Windo上的CygWin下使用GNU Parallelws?@OleTange,因为这意味着我必须在我的计算机上安装两件我不喜欢或不想要的东西——Windows和Cygwin
magick identify -format '%[fx:mean*255] %f\r\n' black.jpg
1.01936 black.jpg
magick identify -format '%[fx:mean*255] %f\r\n' nonblack.jpg
1.72921 nonblack.jpg