‘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<cv::SIFT>* SIFT;

原因:在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版本不对应导致的,还是自己摸索吧,一不小心又熬夜了。。。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值