我有两种类型的图像要处理。一个带有白色背景,另一个带有深色背景。我的要求是对每种类型应用不同的阈值
例如:用于白色背景
(thresh, img_bin) = cv2.threshold(img, 128 , 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
用于深色背景
(thresh, img_bin) = cv2.threshold(img, 128 , 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
我正在使用cv.imread(img,0)
我正在进行形态转换,因此我需要反转白色背景图像。但对于深色背景,我不想反转。
答案 0 :(得分:0)
要扩展@nathancy的注释,可以使用sum或mean的OpenCV函数之一
对于普通的旧24位彩色图像,黑色和白色表示为 (0,0,0)黑色 (255,255,255)白色
现在让我们在上面运行一些代码
import cv2 as cv
import numpy as np
img = cv.imread('lorem_ipsum.png',cv.IMREAD_COLOR)
ret = cv.mean(img)
print(ret)
ret = cv.mean(ret)
print(ret)
ret = ret*4/3
print(ret)
ret = cv.mean(cv.mean(img))[0]*4/3
print(ret)
给出输出:
(229.78, 228.28, 228.95, 0.0)
(171.74, 0.0, 0.0, 0.0)
228.98
228.98
第一行为我们提供了蓝色,绿色,红色和Alpha通道的平均值。第二行是均值。由于第一行的条目为零,因此均值过低。我们要忽略Alpha通道。因此,在最后一行,我们只选择均值均值中的第一个元素并将其缩放4/3,以获得0到255的答案。我们的答案是228.98->图片大部分是白色的。最后一行是一行完成所有操作的结果。