如何将灰度图像中的轮廓值设置为此轮廓的最高值?

时间:2017-04-04 09:20:07

标签: java c++ opencv

我想将轮廓的所有值均衡到此轮廓的最高值,为了更好地理解,请查看下面的图像: Contours

这里看第一个轮廓,其最大值为200,在处理之后,所有区域变得与最高值相同,并且第二个轮廓具有最高值255,在处理完所有区域之后这个轮廓变得一样。

有没有简单有效的方法呢?

1 个答案:

答案 0 :(得分:2)

是的,在使用阈值处理的opencv中相当容易。这是Python中的代码

import numpy as np
import cv2

img=cv2.imread(your_input_image_path)

max_value=np.max(img)

#thresholding : setting every pixel in img above 1 to max_value
_,th=cv2.threshold(img,1,max_value,cv2.THRESH_BINARY)

cv2.imwrite(your_output_image_path,th)

输入: input

输出: output

这适用于你的两个图像,如果你的背景并不总是黑色,你需要稍微调整一下,或者你想要在一个特定的物体上做这件事(我使用单词轮廓有点挫折) 。如果是这样,那么您需要使用findContours等来首先获取对象的边界,然后使用蒙版仅对图像的那部分进行阈值。
但是如果你的图像总是黑色背景上的一个对象,那么这个代码就可以了。

相关问题