‘SIFT‘ is not a member of ‘cv‘ 的解决办法

在golang中使用opencv,已经在本地安装了opencv-v4.3.0,运行如下代码:

package main

import (
    "fmt"

    "gocv.io/x/gocv"
)

func main() {
    fmt.Printf("gocv version: %s\n", gocv.Version())
    fmt.Printf("opencv lib version: %s\n", gocv.OpenCVVersion())
}

报错:’SIFT’ is not a member of ‘cv’ typedef cv::Ptr

原因:在go mod tidy 时,使用gocv的其他版本,与opencv 4.3.0的版本冲突
解决办法:修改 go.mod中gocv包的版本,将其改为0.23.0版

require gocv.io/x/gocv v0.30.0 改为require gocv.io/x/gocv v0.23.0

修改后再次go mod tidy即可。

重新运行程序,成功运行结果:

gocv version: 0.23.0
opencv lib version: 4.3.0

总结:依赖库的版本(golang为gocv)与 opencv版本 的版本冲突,会导致此类问题;

其他语言,遇到这类问题,可能也是依赖库版本与opencv版本冲突导致,如python的opencv-contrib-python库的版本,可以参考这个解决。

为啥说到其他语言呢,因为昨晚遇到这个问题,第一时间度了,结果搜索了一大堆都是其他语言遇到的这个问题,golang貌似使用opencv的文档很少,这一大堆的解决方法都试了下,并没有能解决问题,也没有提到是依赖库版本与opencv版本不对应导致的,还是自己摸索吧,一不小心又熬夜了。。。

在此记录下,以后少熬夜,大家也少熬夜

Original: https://blog.csdn.net/qq_36034503/article/details/124645591
Author: FootMark.run
Title: ‘SIFT‘ is not a member of ‘cv‘ 的解决办法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/704245/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球