我想将轮廓的所有值均衡到此轮廓的最高值,为了更好地理解,请查看下面的图像:
这里看第一个轮廓,其最大值为200,在处理之后,所有区域变得与最高值相同,并且第二个轮廓具有最高值255,在处理完所有区域之后这个轮廓变得一样。
有没有简单有效的方法呢?
答案 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)
这适用于你的两个图像,如果你的背景并不总是黑色,你需要稍微调整一下,或者你想要在一个特定的物体上做这件事(我使用单词轮廓有点挫折) 。如果是这样,那么您需要使用findContours
等来首先获取对象的边界,然后使用蒙版仅对图像的那部分进行阈值。
但是如果你的图像总是黑色背景上的一个对象,那么这个代码就可以了。