真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何利用golang進行OpenCV學(xué)習(xí)和開發(fā)

小編給大家分享一下如何利用golang進行OpenCV學(xué)習(xí)和開發(fā),相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),北屯企業(yè)網(wǎng)站建設(shè),北屯品牌網(wǎng)站建設(shè),網(wǎng)站定制,北屯網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,北屯網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

前言

記得開始使用 OpenCV 的時候是在大學(xué)時期,當(dāng)時用的是 C 語言,OpenCV 版本好像是1.1,隨著時間的推移,后面 C++逐漸代替了 C,iOS 也有整合好的 lib 可以使用 OpenCV,現(xiàn)在Python, go 等語言進行開發(fā),今天主要是說一說如何使用 go 語言配置開發(fā) OpenCV。

OpenCV這一名稱包含了Open和 Computer Vision兩者的意思。實際上,Open指Open Source(開源,即開放源代碼),Computer Vision則指計算機視覺。OpenCV的發(fā)展對軟件的開發(fā)具有重要影響。

OpenCV作為開放的數(shù)字圖像處理和計算機視覺軟件平臺,有以下特點:

① 開放C源碼。

② 基于Intel處理器指令集開發(fā)的優(yōu)化代碼。

③ 統(tǒng)一的結(jié)構(gòu)和功能定義。

④ 強大的圖像和矩陣運算能力。

⑤ 方便靈活的用戶接口。

⑥ 同時支持MSWindows和Linux平臺。

作為一個基本的計算機視覺、圖像處理和模式識別的開源項目,OpenCV可以直接應(yīng)用于很多領(lǐng)域,作為二次開發(fā)的理想工具。

庫的選擇

使用 Opencv 2+的話,可以用這個庫 https://github.com/go-opencv/go-opencv,但這個庫沒有支持 OpenCV 3+, 所以想用 OpenCV 3+ 可以使用https://github.com/hybridgroup/gocv,今天主要就是介紹 gocv 的使用。

環(huán)境配置

如果還沒安裝 OpenCV 的話, Mac OS可以通過 brew install opencv 進行安裝OpenCV 3.4.1。

安裝好 go 之后,直接運行 go get -u -d gocv.io/x/gocv 命令獲取 gocv 庫,進入該庫根目錄 cd $GOPATH/src/gocv.io/x/gocv, 運行 source ./env.sh,然后就可以使用 go run命令運行里面的示例了,剛開始學(xué)可以直接在示例里面修改代碼運行。

IDE 的選擇

本來想使用 IDEA + go plugin 的方式來開發(fā),誰知 IDEA 出了 go IDE(需要收費),go plugin 就停止維護了,只能放棄,隨后選擇 vscode+plugin 的方式,方便快捷,感覺也不錯,智能提示和代碼跳轉(zhuǎn)都有了,調(diào)試還沒試,估計調(diào)試和 run 的話都是可以配置的。

示例

配置好之后迫不及待就寫代碼了,由于 gocv 對 OpenCV 進行了封裝,方法名基本都一致,但是使用上還是有些區(qū)別,不過 vscode 代碼跳轉(zhuǎn)很方便,不清楚直接跳到源碼看看就知道了,下面貼一個查找邊框的例子,看看是不是和 C++的寫法很不一樣。

// What it does:
//
// This example uses the Window class to open an image file, and then display
// the image in a Window class.
//
// How to run:
//
// go run ./cmd/showimage/main.go /home/ron/Pictures/mcp23017.jpg
//
// +build example

package main

import (
 "fmt"
 "image"
 "image/color"
 "os"

 "gocv.io/x/gocv"
)

func main() {
 if len(os.Args) < 2 {
 fmt.Println("How to run:\n\tshowimage [imgfile]")
 return
 }

 filename := os.Args[1]
 window := gocv.NewWindow("Hello")
 img := gocv.IMRead(filename, gocv.IMReadColor)
 grayImage := gocv.NewMat()
 defer 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, image.Pt(resultImage.Rows(), resultImage.Cols()), 0, 0, gocv.InterpolationCubic)
 gocv.Dilate(resultImage, &resultImage, gocv.NewMat())
 gocv.GaussianBlur(resultImage, &resultImage, image.Pt(5, 5), 0, 0, gocv.BorderWrap)
 results := gocv.FindContours(resultImage, gocv.RetrievalTree, gocv.ChainApproxSimple)
 imageForShowing := gocv.NewMatWithSize(resultImage.Rows(), resultImage.Cols(), gocv.MatChannels4)
 for index, element := range results {
 fmt.Println(index)
 gocv.DrawContours(&imageForShowing, results, index, color.RGBA{R: 0, G: 0, B: 255, A: 255}, 1)
 gocv.Rectangle(&imageForShowing,
 gocv.BoundingRect(element),
 color.RGBA{R: 0, G: 255, B: 0, A: 100}, 1)
 }

 if img.Empty() {
 fmt.Println("Error reading image from: %v", filename)
 return
 }

 for {
 window.IMShow(imageForShowing)
 if window.WaitKey(1) >= 0 {
 break
 }
 }
}

我是用 showimage.go 這個示例改的,處理順序是:

  • 灰度化 CvtColor

  • 二值化 Threshold

  • 縮小圖片 Resize

  • 膨脹 Dilate

  • 高斯模糊 GaussianBlur

  • 查找輪廓 FindContours

  • 繪制輪廓 DrawContours

  • 繪制輪廓的最小外接矩形 Rectangle

從上面例子可以看到,方法都是在 package gocv下,使用的時候會有代碼提示,包括參數(shù)也有提示,由于 go 沒有類構(gòu)造方法,都是使用 New+類型名稱這樣的函數(shù)還創(chuàng)建類型。

我也是 go 的新手,這里是邊看著文檔邊寫的代碼,還好有智能代碼提示,用起來還算得心應(yīng)手,希望這篇入門文章對想使用 go 來進行 OpenCV 開發(fā)的同學(xué)有所幫助。

以上是“如何利用golang進行OpenCV學(xué)習(xí)和開發(fā)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


新聞標(biāo)題:如何利用golang進行OpenCV學(xué)習(xí)和開發(fā)
標(biāo)題來源:http://weahome.cn/article/gehooj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部