调用OpenCV实现视觉算法、人脸识别等,Golang语言
gocv是一个基于OPENCV的golang项目。gocv首页是https://gocv.io/想要用gocv进行人脸检测首先得安装gocv 官网内有详细的安装步骤这里就不重复了。gocv内的函数与opencv的函数名是一样的差别在于参数的不一样。因为自己没有学过opencv对opencv的函数不是很熟悉所以就依葫芦画瓢百度出py或者C的人脸检测的例子照着写。要进行人脸检测首先得有图片 在这里我们可以选择打开电脑的摄像头来获取图片webcam, err : gocv.OpenVideoCapture(deviceID)if err ! nil { fmt.Printf(error opening video capture device: %v\n, deviceID) return } defer webcam.Close()img : gocv.NewMat()defer img.Close()if ok : webcam.Read(img); !ok {fmt.Printf(“Device closed: %v\n”, deviceID)return } if img.Empty() { continue }函数OpenVideoCapture的功能是打开一个摄像头设备 deviceID表示要打开的摄像头设备号一般为0. 函数NewMat()的功能是创建一个图片变量就是opencv里的MAT用来存放图片然后用 webcam.Read(img)来把摄像头读取到的图片加载进图片变量中。如果电脑没有摄像头或者想对图片进行检测我们可以直接用gocv.IMRead(file, int)函数来打开一张图片file是图片的位置地址 int为打开图片的方式 -1为全彩0为灰度等等。在对图片进行检测之前我们要先加载检测模型classifier : gocv.NewCascadeClassifier()defer classifier.Close() if !classifier.Load(xmlFile) { fmt.Printf(Error reading cascade file: %v\n, xmlFile) return }rects : classifier.DetectMultiScale(img)函数gocv.NewCascadeClassifier()会返回一个分类器然后用 classifier.Load(xmlFile)来加载分类文件其中分来文件haarcascade_frontalface_default.xml可以在opencv的github项目内找到加载完分类器后就可以使用 classifier.DetectMultiScale(img)函数对图片进行检测该函数会返回检测到的人脸的两个点对角点的坐标我们可以利用该坐标对图片进行切割或者画边框之类的操作。人脸的剪切。https://qxke.com当我们拿到人脸的两个对角坐标后就可以使用img.Region函数对人脸进行剪切 该函数会返回坐标内的一张图片我们剪切出人脸图片后就可以对该图片进一步的处理以实现人脸识别的功能。