我是opencv的初学者,我尝试对GIMP应用程序等图像进行阈值处理,但我不知道GIMP阈值算法。我在opencv中尝试“阈值”方法,但结果不同。 有人可以帮我吗?
我使用opencv-3.4.3。
>>> np.char.replace(np.array(nums, dtype=np.str), '', 'name ', 1)
array(['name 1', 'name 2', 'name 3', 'name 4', 'name 5'], dtype='<U6')
opencv“阈值”和GIMP“阈值”的结果不相同。
编辑#1
输入图像为: Input file
转换为HLS HLS file
带有Mat image = imread("myimage.png");
Mat ths;
threshold(image, ths, 180, 255, THRESH_BINARY);
imwrite("ths-image.png", ths);
的GIMP阈值图像 GIMP result
将HLS转换为灰色以获取OpenCV阈值 HLS2Gray
带有threshold value = 210
的OpenCV THRESH_BINARY
TRESH_BINARY
带有threshold value = 210
的OpenCV THRESH_TRUNC
THRESH_TRUNC
带有threshold value = 210
的OpenCV THRESH_TOZERO
THRESH_TOZERO
答案 0 :(得分:0)
答案 1 :(得分:0)
以下是使用Imagemagick对图像进行二值化的两种方法。
第一个将图像转换为HCL色彩空间,并提取色度(饱和度)通道(编号为H = 0,C = 1,L = 2)。下一步将图像拉伸到整个动态范围。然后最后做了一个简单的阈值。
convert img.png -colorspace HCL -channel 1 -separate +channel -auto-level -threshold 57% result1.png
第二个简单地将近黄色转换为白色,其余全部转换为黑色。
convert img.png -fuzz 10% -fill white -opaque "rgb(229,207,70)" -fill black +opaque white result2.png
我不知道GIMP做什么。此外,我无法使用GIMP和您指定的210值来再现您的结果。
这是我从GIMP得到的:
我怀疑GIMP在处于值模式时会转换为HSV,并且仅对V通道进行阈值设置。这是使用等效的Imagemagick命令(使用210/255 = 82.35%)
convert img.png -colorspace HSV -channel 2 -separate +channel -threshold 82.35% IM_threshold_210.png
在我看来,它们几乎一样。