Linux上安装GoCV
linux系统建议使用ubuntu来安装gocv,使用centos会出现一堆依赖问题。
需先安装go环境
wget -c https://golang.google.cn/dl/go1.16.5.linux-amd64.tar.gz
tar -C /usr/local -zxvf go1.16.5.linux-amd64.tar.gz
ln -s /usr/local/go/bin /usr/bin/go
go version
安装GoCV
go get -u -d gocv.io/x/gocv
cd $GOPATH/src/gocv.io/x/gocv
make install #编译,有点久可能需要1小时
完成
安装成功后输出如下
gocv version: 0.27.0
opencv lib version: 4.5.2
简单使用(图像人脸识别)
package main
import (
"fmt"
"gocv.io/x/gocv"
"log"
"time"
)
func main() {
//打开图片文件,如果参数是string类型文件路径则打开文件,参数是int类型设备id则打开设备
webcam, e := gocv.OpenVideoCapture("img/2.JPG")
if e != nil {
log.Fatal(e)
}
defer webcam.Close()
//创建级联分类器
classifier := gocv.NewCascadeClassifier()
defer classifier.Close()
//载入级联分类器配置
if !classifier.Load("data/haarcascade_frontalface_default.xml") {
log.Fatal("load the failure")
}
//创建一个空的mat
img := gocv.NewMat()
defer img.Close()
//读取图像的下一帧,如果图像有多帧可使用for循环读取,webcam.Grab()跳过特定帧
if !webcam.Read(&img) {
log.Fatal("failed to read image")
}
//识别人脸位置,返回切片,每个切片值为矩形坐标x,y,人脸数量等于len(rects)
rects := classifier.DetectMultiScale(img)
fmt.Printf("found %d faces\n", len(rects))
for _, v := range rects {
//读取人脸坐标信息,剪切图像另存文件
_ = gocv.IMWrite(fmt.Sprintf("img/%d.jpg", time.Now().UnixNano()), img.Region(v))
}
}
评论