登录
首页 >  Golang >  Go问答

加油! RGB 转灰度

来源:stackoverflow

时间:2024-04-19 18:00:34 212浏览 收藏

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

这个例子很有帮助:https://github.com/milosgajdos/gocv-playground/blob/master/03_Colors_Thresholding/README.md#colorspaces

以下是对适合我的原始代码的一些细微调整(为简单起见,在当前目录中使用 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 转灰度》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>