1

我通过使用 imagemagick 对图像进行阈值处理,然后让 opencv 对其进行其他处理,从而对我试图解决的问题达成了令人满意的解决方案。然而,既然我已经找到了一个令人满意的解决方案,我正试图摆脱对 imagemagick 的依赖。

我在 imagemagick 中对图像进行阈值处理的方式是

convert image.png -threshold 60% image.png

我正在尝试使用 opencv 设置阈值并获得相同的结果,如下所示:

    img = cv2.imread(filepath)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)           
    ret,thresh1 = cv2.threshold(gray,193,255,cv2.THRESH_TOZERO)

尽管生成的图像看起来与肉眼相似,但我的最终结果却有所不同。

有没有办法使用 opencv 获得与 with 相同的输出-threshold 60%

4

1 回答 1

0

在 OpenCV 中,THRESH_TOZERO将超过阈值的值保留为其原始值(参见此处,而在 ImageMagick 中,将超过阈值的值设置为最大值(此处)。

您可能想THRESH_BINARY改用模仿 ImageMagick 的行为,但您可以浏览上面文档链接中的选项,看看哪一个适合您的需要。

于 2013-10-14T17:41:17.673 回答