判断图像是亮的还是暗的
Find If Image Is Bright Or Dark
我想知道如何使用 OpenCV 在 Python 3 中编写函数,该函数接收图像和阈值以及 returns 'dark' 或 'light'在严重模糊它并降低质量之后(越快越好)。这听起来可能含糊不清,但只要行得通就行。
考虑到 image
是灰度图像,您可以试试这个 -
blur = cv2.blur(image, (5, 5)) # With kernel size depending upon image size
if cv2.mean(blur) > 127: # The range for a pixel's value in grayscale is (0-255), 127 lies midway
return 'light' # (127 - 255) denotes light image
else:
return 'dark' # (0 - 127) denotes dark image
参考这些-
Smoothing, Mean, Thresholding
你可以试试这个:
import imageio
import numpy as np
f = imageio.imread(filename, as_gray=True)
def img_estim(img, thrshld):
is_light = np.mean(img) > thrshld
return 'light' if is_light else 'dark'
print(img_estim(f, 127))
就我个人而言,我不会为如此简单的操作而费心编写任何 Python,或加载 OpenCV。如果您绝对必须使用 Python,请忽略此答案并 select 另一个答案。
您可以在终端的命令行中使用 ImageMagick 来获取图像的平均亮度百分比,其中 100 表示 "fully white" 和 0 表示 "fully black",像这样:
convert someImage.jpg -format "%[fx:int(mean*100)]" info:
或者,您可以使用 libvips
,它不太常见,但速度非常快且非常轻巧:
vips avg someImage.png
对于 8 位图像,vips
答案的比例为 0..255。
请注意,这两种方法都适用于许多图像类型,从 PNG 到 GIF、JPEG 和 TIFF。
我想知道如何使用 OpenCV 在 Python 3 中编写函数,该函数接收图像和阈值以及 returns 'dark' 或 'light'在严重模糊它并降低质量之后(越快越好)。这听起来可能含糊不清,但只要行得通就行。
考虑到 image
是灰度图像,您可以试试这个 -
blur = cv2.blur(image, (5, 5)) # With kernel size depending upon image size
if cv2.mean(blur) > 127: # The range for a pixel's value in grayscale is (0-255), 127 lies midway
return 'light' # (127 - 255) denotes light image
else:
return 'dark' # (0 - 127) denotes dark image
参考这些-
Smoothing, Mean, Thresholding
你可以试试这个:
import imageio
import numpy as np
f = imageio.imread(filename, as_gray=True)
def img_estim(img, thrshld):
is_light = np.mean(img) > thrshld
return 'light' if is_light else 'dark'
print(img_estim(f, 127))
就我个人而言,我不会为如此简单的操作而费心编写任何 Python,或加载 OpenCV。如果您绝对必须使用 Python,请忽略此答案并 select 另一个答案。
您可以在终端的命令行中使用 ImageMagick 来获取图像的平均亮度百分比,其中 100 表示 "fully white" 和 0 表示 "fully black",像这样:
convert someImage.jpg -format "%[fx:int(mean*100)]" info:
或者,您可以使用 libvips
,它不太常见,但速度非常快且非常轻巧:
vips avg someImage.png
对于 8 位图像,vips
答案的比例为 0..255。
请注意,这两种方法都适用于许多图像类型,从 PNG 到 GIF、JPEG 和 TIFF。