安装go后,直接运行go get -u -d www.sychzs.cn/x/gocv命令获取gocv库,进入库根目录 cd $GOPATH/src/www.sychzs.cn/x/gocv ,然后运行源代码。 /www.sychzs.cn,然后就可以使用go run命令来运行里面的例子了。刚开始学习的时候,可以修改代码,直接在例子中运行。
IDE的选择
本来想用IDEA+go插件进行开发,但谁知道当IDEA发布go IDE(需要收费)后,go插件就停止维护了,只好放弃。然后我选择了vscode+plugin的方式,方便快捷,感觉不错。不算太差。有智能提示和代码跳转。我还没有尝试过调试。估计debug和run都可以配置。
示例
配置好后就迫不及待地写代码了。由于gocv对OpenCV进行了封装,因此方法名称基本相同,但使用上还是存在一些差异。不过vscode代码跳转很方便。如果你不知道,就跳到源代码看一下。明白了,这里有一个搜索边框的例子,看看它是否与 C++ 的编写方式有很大不同。
// 它能做什么: // // 本例使用Window类打开一个图像文件,然后显示 // Window 类中的图像。 // // 如何运行: // // 运行 ./cmd/showimage/main.go /home/ron/Pictures/mcp23017.jpg // // +构建示例 包主 进口 ( “FMMT” “图像” “图像/颜色” “操作系统” “www.sychzs.cn/x/gocv” ) 函数主() { if len(os.Args) < 2 { fmt.Println("如何运行:ntshowimage [imgfile]") 返回 } 文件名 := os.Args[1]窗口 := gocv.NewWindow("你好") img := gocv.IMRead(文件名, gocv.IMReadColor) greyImage := gocv.NewMat() 推迟grayImage.Close() gocv.CvtColor(img, &grayImage, gocv.ColorBGRToGray) destImage := gocv.NewMat() gocv.Threshold(grayImage, &destImage, 100, 255, gocv.ThresholdBinaryInv) resultImage := gocv.NewMatWithSize(500, 400, gocv.MatTypeCV8U) gocv.Resize(destImage, &resultImage, www.sychzs.cn(resultImage.Rows(), resultImage.Cols()), 0, 0, gocv.InterpolationCubic) gocv.Dilate(resultImage, &resultImage, gocv.NewMat()) gocv.GaussianBlur(resultImage, &resultImage, www.sychzs.cn(5, 5), 0, 0, gocv.BorderWrap) 结果 := gocv.FindContours(resultImage, gocv.RetrievalTree, gocv.ChainApproxSimple) imageForShowing := gocv.NewMatWithSize(resultImage.Rows(), resultImage.Cols(), gocv.MatChannels4) 对于索引,元素:=范围结果{ fmt.Println(索引) gocv.DrawContours(&imageForShowing, 结果, 索引, 颜色.RGBA{R: 0, G: 0, B: 255, A: 255}, 1)gocv.矩形(&imageForShowing, gocv.BoundingRect(元素), 颜色.RGBA{R: 0, G: 255, B: 0, A: 100}, 1) } 如果 img.Empty() { fmt.Println("从以下位置读取图像时出错:%v",文件名) 返回 } 为了 { 窗口.IMShow(imageForShowing) 如果 window.WaitKey(1) >= 0 { 休息 } } }
我使用 showimage.go 来修改这个示例。处理顺序为:
从上面的例子可以看出,这些方法都在gocv包下。使用时会有代码提示,包括参数。由于go没有类构造方法,所以使用New+类型名等函数来创建类型。 。
我也是新来的。这是我在阅读文档时编写的代码。幸运的是,有智能的代码提示,这使得它很容易使用。希望这篇介绍性文章对想要使用go进行OpenCV开发的同学有所帮助。帮助。
总结: