程序开发 · 2024年9月29日

加油! RGB 转灰度

当前位置: > > > > 加油! RGB 转灰度

来源:stackoverflow
2024-04-19 18:00:34
0浏览
收藏

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《加油! RGB 转灰度》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!

问题内容

我在将图像转换为灰度时遇到问题,你能帮我吗? 我是 go 和 go cv 的新手,但我已经完成了一个学期的图像处理,我正在做一个项目,以最佳路径在 7 个不同的地点获取一些用品。

package main

import (
    "gocv.io/x/gocv"
    "path/filepath"
)

func main() {
    pizzaPath := filepath.Join("Mars.bmp")
    window := gocv.NewWindow("Hello Mars")
    windowB := gocv.NewWindow("Hello Gray Mars")

    MarsImg := gocv.NewMat()
    Marsgray := gocv.NewMat()

    MarsImg = gocv.IMRead(pizzaPath, gocv.IMReadColor)
    Marsgray = gocv.ConvertTo(*Marsgray,0) 

    window.IMShow(MarsImg)
    window.WaitKey(0)

    windowB.IMShow(Marsgray)
    windowB.WaitKey(0)
}

解决方案

这个问题很旧,但仍然出现在搜索结果中……所以这是对我有用的答案:

  1. 使用 gocv.cvtcolor(marsimg, &marsgray, gocv.colorbgrtogray) 而不是 marsimg.convertto(&marsgray, 0) 转换为灰度
  2. 请务必在参数列表中传递指向灰度 mat(即 &marsgray)的指针,而不是传递 mat 的值(即 *marsgray

这个例子很有帮助:

以下是对适合我的原始代码的一些细微调整(为简单起见,在当前目录中使用 mars.png ):

import (
    "gocv.io/x/gocv"
)

func main() {
    window := gocv.NewWindow("Hello Mars")
    windowB := gocv.NewWindow("Hello Gray Mars")

    marsImg := gocv.IMRead("./Mars.png", gocv.IMReadColor)
    marsGray := gocv.NewMat()

    gocv.CvtColor(marsImg, &marsGray, gocv.ColorBGRToGray)

    window.IMShow(marsImg)
    windowB.IMShow(marsGray)
    windowB.WaitKey(0)
}

到这里,我们也就讲完了《加油! RGB 转灰度》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注公众号,带你了解更多关于的知识点!