Go調(diào)用opencv實(shí)現(xiàn)圖片矯正的代碼示例
圖片矯正實(shí)現(xiàn)流程
1.獲取角度
HoughLines獲取角度
HoughLines 返回的是角度,畫線坐標(biāo)點(diǎn)需要計(jì)算。[0]像素單位距離 [1]角度;注意問題得到線條有干擾需要控制
HoughLinesPWithParams 返回的是坐標(biāo)點(diǎn)直接畫線
FindContours獲取角度
FindContours 得到最大面積輪廓-》得到角度
2.旋轉(zhuǎn)圖片
temp2D := gocv.GetRotationMatrix2D(rect.Center, angle, 0.8) gocv.WarpAffine(reactImg, &desc, temp2D, image.Pt(0, reactImg.Cols()/2))
代碼
windowA := gocv.NewWindow("watch") defer windowA.Close() root := getCurrentAbPathByCaller() img1 := gocv.IMRead(root+string(os.PathSeparator)+"tp.jfif", gocv.IMReadColor) img2 := gocv.NewMat() gocv.Canny(img1, &img2, 80, 160) //img3, _ := img2.ToImage() /* RetrievalExternal 最外側(cè)輪廓 RETR_LIST:返回所有輪廓線,不建立等級(jí)關(guān)系 RETR_CCOMP :返回所有輪廓,包含兩個(gè)層級(jí)結(jié)構(gòu) RETR_TREE :返回所有輪廓,建立完整的層次結(jié)構(gòu) */ pointVecotr := gocv.FindContours(img2, gocv.RetrievalExternal, gocv.ChainApproxNone) gocv.DrawContours(&img1, pointVecotr, -1, color.RGBA{255, 0, 0, 0}, 1) maxindex := getMaxArea(pointVecotr) react := gocv.BoundingRect(pointVecotr.At(maxindex)) reactImg := img1.Region(react) rect := gocv.MinAreaRect(pointVecotr.At(maxindex)) points := rect.Points for i := 0; i < len(points); i++ { fmt.Println("%d %d", points[i].X, points[i].Y) } // line1 := math.Sqrt(math.Pow(float64(points[1].Y-points[0].Y), 2) + math.Pow(float64(points[1].X-points[0].X), 2)) line2 := math.Sqrt(math.Pow(float64(points[3].Y-points[0].Y), 2) + math.Pow(float64(points[3].X-points[0].X), 2)) //角度 var angle = rect.Angle if line1 > line2 { angle = 90 + angle } desc := gocv.NewMat() /* GetAffineTransform 原圖像點(diǎn)-》轉(zhuǎn)換后圖像點(diǎn) */ temp2D := gocv.GetRotationMatrix2D(rect.Center, angle, 0.8) gocv.WarpAffine(reactImg, &desc, temp2D, image.Pt(0, reactImg.Cols()/2)) //reactImg := img1.Region(react) //gocv.BoxPoints(gocv.MinAreaRect(pointVecotr.At(getMaxArea(pointVecotr))), &img2) windowA.IMShow(desc) windowA.WaitKey(0)
到此這篇關(guān)于Go調(diào)用opencv實(shí)現(xiàn)圖片矯正的代碼示例的文章就介紹到這了,更多相關(guān)Go opencv圖片矯正內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang實(shí)現(xiàn)IP地址轉(zhuǎn)整數(shù)的方法詳解
在 Go 語言中,將 IP 地址轉(zhuǎn)換為整數(shù)涉及到解析 IP 地址并處理其字節(jié)表示,本文給大家介紹了Golang實(shí)現(xiàn)IP地址轉(zhuǎn)整數(shù)的方法,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2024-02-02Go語言實(shí)現(xiàn)MapReduce的示例代碼
MapReduce是一種備受歡迎的編程模型,它最初由Google開發(fā),用于并行處理大規(guī)模數(shù)據(jù)以提取有價(jià)值的信息,本文將使用GO語言實(shí)現(xiàn)一個(gè)簡(jiǎn)單的MapReduce,需要的可以參考下2023-10-10HTTP服務(wù)壓力測(cè)試工具及相關(guān)術(shù)語講解
這篇文章主要為大家介紹了HTTP服務(wù)壓力測(cè)試工具使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04go代碼實(shí)現(xiàn)買房貸款月供計(jì)算的方法
今天小編就為大家分享一篇關(guān)于go代碼實(shí)現(xiàn)買房貸款月供計(jì)算的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-04-04