龙芯go之路(二)-安装opencv-go
2023-02-26 10:20:56 时间
龙芯派安装go-opencv
- 其实龙芯派2代已经集成了opencv2 但其实没有安装完全,我们无法正常使用,所以在使用前我们要将其安装完整
yum install numpy opencv* #在龙芯派联网的情况下执行这条命令即可,这样opencv2 就可以安装完成了,就可以正常使用opencv2了
- 要对go的一些环境变量进行修改
export CGO_CFLAGS="-I/usr/include/opencv" export CGO_LDFLAGS="-L/usr/lib64 -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videosta -lpthread"
-
如果还是不行按照接下来的配置来配置go的环境变量
CGO_ENABLED=1 GOOS=linux GOARCH=mips64le CC=mips-linux-gnu-gcc CXX=mips-linux-gnu-g++ CGO_CFLAGS="-I/usr/include/opencv" CGO_LDFLAGS="-L/usr/lib64 -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videosta" CGO_LDFLAGS="-static"
在这里提一句我们使用的go的opencv库是go-opencv而不是gocv我们这个库使用的是opencv2
(福利推荐:阿里云、腾讯云、华为云服务器最新限时优惠活动,云服务器1核2G仅88元/年、2核4G仅698元/3年,点击这里立即抢购>>>)
库地址 :https://github.com/go-opencv/go-opencv
-
在这里我给出一个使用opencv2在龙芯派上使用go视频推流的小例子
package main import "C" import ( "fmt" "github.com/go-opencv/go-opencv/opencv" "log" "net/http" _ "net/http/pprof" "unsafe" //"github.com/gwuhaolin/livego" "github.com/hybridgroup/mjpeg" ) var ( deviceID int err error stream *mjpeg.Stream Cap *opencv.Capture ) func main() { // parse args //deviceID := 0 host := ":8554" // open webcam Cap = opencv.NewCameraCapture(0) //Cap = opencv.NewFileCapture("/home/zjh/test.flv") fmt.Println("1") if Cap == nil { panic("can not open camera") return } defer Cap.Release() // create the mjpeg stream stream = mjpeg.NewStream() // start capturing go mjpegCapture() fmt.Println("Capturing. Point your browser to " + host) // start http server http.Handle("/", stream) log.Fatal(http.ListenAndServe(host, nil)) } func mjpegCapture() { for { img := Cap.RetrieveFrame(1) if img != nil { buf := opencv.EncodeImage(".jpg", unsafe.Pointer(img.GetMat()), []int{64}) bufss := buf.GetData() fmt.Println("9") stream.UpdateJPEG(bufss) fmt.Println("10") } else if img == nil { fmt.Println("Image is nil") break } } }
- 要想跑起来这个程序还是不行,因为swig库支持的版本太低了,我们要去swig的官网,下载源码后在龙芯派上进行交叉编译
-
然后执行
export CGO_LDFLAGS="-g -O2 -lm" go run main.go
即可编译成功
你还在原价购买阿里云、腾讯云、华为云、天翼云产品?那就亏大啦!现在申请成为四大品牌云厂商VIP用户,可以3折优惠价购买云服务器等云产品,并且可享四大云服务商产品终身VIP优惠价,还等什么?赶紧点击下面对应链接免费申请VIP客户吧:
相关文章
- OpenHarmony数据转码应用开发实战(下)
- 在打包 tar 文件的时候,怎样排除文件和目录
- 盘点数据治理的六个价值
- 2022年大数据的五个主要发展趋势
- TienChin 项目中的 RBAC 是怎么玩的?
- 华为全联接2022 openEuler 累计装机量达 245 万套,市场份额 22%,助力企业高效进行操作系统迁移
- 企业真的用好大数据了吗?
- 手绘了11张图,帮你看明白 Zookeeper 如何实现服务注册发现
- Windows上创建的文件,上传到Linux服务器,文件名乱码?
- 打造成熟的企业数据战略,拥抱混合云时代
- 数据项目成功的三个必不可少的因素
- Linux中的输入、输出和错误重定向
- 大数据与Hadoop的五大优势
- 使用 Lua 解析配置文件
- Chrome DevTools中的这些操作,你都知道吗?
- 使用 PSCP 将文件和文件夹从 Windows 传输到 Linux
- Kyligence:智能管理,让数据价值最大化
- 学习 Git,看这一篇就够了!
- 如何使用备用端口连接 ssh
- 在云中实施大数据的详情分析