首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用OpenCV复制Gimp的颜色->反转操作

使用OpenCV复制Gimp的颜色->反转操作
EN

Stack Overflow用户
提问于 2019-07-06 00:03:00
回答 1查看 80关注 0票数 0

我需要对图像进行预处理,以将其转换为高对比度的暗光背景,这是提供给OCR工具的理想选择。

对于初学者来说,我在Gimp中做的预处理只涉及运行它的Color->Invert操作,当输入到OCR工具中时,它会给我一个非常好的结果。

然而,这个问题是如何通过OpenCV复制相同的操作。

以下是我目前为止管理的OpenCV代码(通过OpenCV的Go包装器):

代码语言:javascript
复制
func preprocessImage(inputImage gocv.Mat) { 
    white := gocv.NewMatWithSizeFromScalar(
        gocv.Scalar{255.0, 255.0, 255.0, 255.0}, 
        inputImage.Rows(), inputImage.Cols(), 
        inputImage.Type()
    )
    targetMat := gocv.NewMat()
    gocv.Subtract(white, inputImage, &targetMat)

    pngCompressionOptions := []int{gocv.IMWritePngCompression, 0}
    gocv.IMWrite("result.png", targetMat, pngCompressionOptions)
}

然而,这似乎与我从Gimp获得的结果不匹配。

作为示例,以下是原始图像:

下面是通过Gimp应用Color->Invert的结果:

下面是我通过上面所示的OpenCV代码获得的结果:

很明显,这两个结果似乎有很大的不同。

Gimp关于颜色->Invert到底做了什么的文档是一个bit cryptic,至少对我来说是这样。它提到“色调被它们的互补色取代”,但我不清楚如何复制这一点。

为了清楚起见,我并不期望答案中包含有效的Golang代码。为了复制Gimp的Color-Invert操作,我只是在寻找一些关于我应该将哪些OpenCV函数串在一起(在任何语言中,我都可以移植到Go中)的提示。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-06 23:51:47

我不熟悉Go,但看起来你的图像在打开时就转换成了灰度。

检查您加载标志/参数的位置,是否至少有三个通道,而不是一个通道。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56906254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档