在尝试使用GoCV库中的MatchTemplate函数时,我遇到了以下问题。
Exception 0x20474343 0x17dfa24eb60 0x7ffca1fd59c6 0x7ffca6fd4f99
PC=0x7ffca6fd4f99
runtime: unknown pc 0x7ffca6fd4f99
stack: frame={sp:0x194f1ff0b0, fp:0x0} stack=[0x0,0x194f1ff9e0)
...
...
...
goroutine 1 [syscall]:
runtime.cgocall(0xcdf650, 0xc000123dc8)
C:/Program Files/Go/src/runtime/cgocall.go:156 +0x4a fp=0xc000123da0 sp=0xc000123d68 pc=0xb640aa
gocv.io/x/gocv._Cfunc_MatchTemplate(0x17dfa218a30, 0x17dfa24e9b0, 0x17dfa24ea20, 0x5, 0x17dfa24ea90)
_cgo_gotypes.go:5195 +0x52 fp=0xc000123dc8 sp=0xc000123da0 pc=0xcd1292
gocv.io/x/gocv.MatchTemplate.func1({0x17dfa218a30, {0x0, 0xdf3498, 0xef84a0}}, {0x17dfa24e9b0, {0x0, 0xcdbaf0, 0xc000123e98}}, 0xc000123e98, 0x5, ...)
C:/Users/zachw/go/pkg/mod/gocv.io/x/gocv@v0.28.0/imgproc.go:673 +0xcf fp=0xc000123e18 sp=0xc000123dc8 pc=0xcd202f
gocv.io/x/gocv.MatchTemplate({0x17dfa218a30, {0x0, 0x7cee6480140, 0xb9c932}}, {0x17dfa24e9b0, {0x0, 0xc000056000, 0x300000002}}, 0xc000056000, 0x5, ...)
C:/Users/zachw/go/pkg/mod/gocv.io/x/gocv@v0.28.0/imgproc.go:673 +0x79 fp=0xc000123e98 sp=0xc000123e18 pc=0xcd1ed9
main.main()
...
...
...代码非常简单,我正在读取2个PNG文件,然后将它们传递给MatchTemplate函数。我不确定可能出了什么问题。
func main() {
haystack_img := gocv.IMRead("./test.png", gocv.IMReadUnchanged)
needle_img := gocv.IMRead("./test2.png", gocv.IMReadUnchanged)
img := gocv.NewMat()
gocv.MatchTemplate(haystack_img, needle_img, &img, gocv.TmCcoeffNormed, gocv.NewMat())
window := gocv.NewWindow("Hello")
for {
window.IMShow(img)
window.WaitKey(1)
}
}GoCV和OpenCV版本:
$ go run cmd/version/main.go
gocv version: 0.28.0
opencv lib version: 4.5.3Go版本:go version go1.17.2 windows/amd64
操作系统:Windows 10
目的:只是想弄清楚如何在Golang中使用OpenCV。去玩玩。我正在尝试拍摄一张较小的图像,看看它是否位于另一张图像中。
发布于 2021-10-16 13:45:07
您可以使用gocv.DrawMatches()和gocv.NewBFMatcher()
特征匹配
使用SIFT算法匹配图像中的特征。https://github.com/hybridgroup/gocv/blob/release/cmd/feature-matching/main.go
和
Img-相似度计算和比较一对图像的感知散列,使用各种算法。https://github.com/hybridgroup/gocv/blob/master/cmd/img-similarity/main.go
https://stackoverflow.com/questions/69592475
复制相似问题