我在试图增加图像亮度时遇到了问题。
这是原始图像:
我想得到的图像是这样的:
现在使用以下代码增加亮度:
image = cv2.imread("/home/wni/vbshare/tmp/a4_index2.png",0)
if sum(image[0])/len(image[0])<200:
new = np.where((255-image)<image,255,image*2)
else:
new = image
return new
我得到了以下图像:
所以,似乎有些点的亮度溢出了。
我试着把阈值从200改成其他数字,例如125,100,140等等 然而,图像亮度保持几乎相同的暗或溢出。
环境:
Python:2.7.10
Opencv:3.2.0版
如有任何建议,我们将不胜感激。
谢谢。
这是我拍摄的一个简单的算法,用于清理特定的图像。可以随意使用它,并进一步调整它,以获得所需的结果。
NB:显示的代码应该同时适用于OpenCV的2.4.x和3.x分支。
步骤0
将输入图像加载为灰度。
步骤1
放大图像,以便去掉文本。 这一步有助于保留条形码。
步骤2
中值模糊结果与一个像样的大小内核,以进一步抑制任何文本。
这会给我们一个相当好的背景图像,包含所有的阴影和/或变色。
步骤3
计算原始图像和我们刚刚得到的背景之间的差异。相同的位将是黑色(接近0差),文本将是白色(大差)。
既然我们要黑对白,我们就把结果颠倒过来。
步骤4
将图像规格化,以便使用完整的动态范围。
步骤5
现在我们的报纸还是有些灰色。我们可以将其截断,然后重新规范化图像。
完成。。。
好吧,至少对我来说是这样;)你可能会想修剪它,然后做任何你想做的后处理。
注意:在得到差分图像后,可能需要切换到更高的精度(16位int或float),以最小化重复规格化中累积的舍入误差。
你需要的是thresholding。这将允许您将所有不太暗的设置为纯白色,并将非常暗的设置为纯黑色(或任何其他颜色)。这会让你开始:
在您使用它之后,可以使用adaptive thresholding获得更好的结果。
请看this great tutorial基本上做你想做的事情---还有一个额外的好处,它包括一个关于扭曲的教程,可以得到一个矩形区域的纸张,太!
编辑:我得到了相当好的结果与您的图像结合阈值,然后自适应阈值。
相关问题 更多 >
编程相关推荐