github上golang结合opencv:https://github.com/go-opencv/go-opencv

下载后进入go-opencv/samples目录,目录下为示例代码

编译opencv源码:http://blog.csdn.net/zhjinw/article/details/79627454

试运行go run hellocv.go

如果出现以下错误,即没有找到opencv头文件,到mingw安装目录下的include文件夹,查看是否存在opencv和opencv2的文件夹,如果没有,到opencv编译目录include以及moudles下拷贝

如果出现以下错误,即没有找到opencv的相关dll动态库,到mingw安装目录下的bin文件夹,查看是否有libopencv_core等相关dll文件,如果没有,到opencv编译目录bin文件夹中拷贝过来。

这里需要注意以下,我们编译的是opencv2.4.9,源码中为opencv2.4.2,需要将源码中的

#cgo windows LDFLAGS: -lopencv_core242 -lopencv_imgproc242 -lopencv_photo242 -lopencv_highgui242 -lstdc++

改为:

//#cgo windows LDFLAGS: -lopencv_core249 -lopencv_imgproc249 -lopencv_photo249 -lopencv_highgui249 -lstdc++

将242改为249即可

运行成功后的结果如下所示

接下来我们使用opencv来进行人脸比对,由于我也是初次接触opencv,没有找到opencv直接提供的人脸比对接口,这里我们采用以下方法来实现人脸比对,代码中存在很多异常,我们只是进行功能验证。

  1. 分别用facedetect功能将两张图片中的人脸检测出来
  2. 将这两张人脸图片转换成单通道的图像
  3. 使用直方图比较这两张单通道的人脸图像,得出相似度。
code:
package main
/*
#include <stdio.h>
#include <stdlib.h>static float **test(){float *a = malloc(2*sizeof(float));float **b = malloc(1*sizeof(a));*a = 0;*(a + 1) = 255;b[0] = a;return b;
}
*/
//#include "../opencv/opencv.h"
//#cgo linux  pkg-config: opencv
//#cgo darwin pkg-config: opencv
//#cgo freebsd pkg-config: opencv
//#cgo windows LDFLAGS: -lopencv_core249 -lopencv_imgproc249 -lopencv_photo249 -lopencv_highgui249 -lstdc++
import "C"
import ("unsafe""fmt""path""runtime""github.com/lazywei/go-opencv/opencv"//"../opencv" // can be used in forks, comment in real application
)func main() {_, currentfile, _, _ := runtime.Caller(0)HistogramBins := 256image1 := opencv.LoadImage(path.Join(path.Dir(currentfile), "../images/111.jpg"))cascade := opencv.LoadHaarClassifierCascade(path.Join(path.Dir(currentfile), "haarcascade_frontalface_alt.xml"))cascade.DetectObjects(image1)image2 := opencv.LoadImage(path.Join(path.Dir(currentfile), "../images/222.jpg"))cascade = opencv.LoadHaarClassifierCascade(path.Join(path.Dir(currentfile), "haarcascade_frontalface_alt.xml"))cascade.DetectObjects(image2)histogram1 :=  (*C.CvHistogram)(C.cvCreateHist(1, (*C.int)(unsafe.Pointer(&HistogramBins)), C.CV_HIST_ARRAY, C.test(), 1));histogram2 :=  (*C.CvHistogram)(C.cvCreateHist(1, (*C.int)(unsafe.Pointer(&HistogramBins)), C.CV_HIST_ARRAY, C.test(), 1));srcImage := opencv.CreateImage(image1.Width(), image1.Height(), image1.Depth(), 1)opencv.CvtColor(image1, srcImage, C.CV_BGR2GRAY)tarImage := opencv.CreateImage(image2.Width(), image2.Height(), image2.Depth(), 1)opencv.CvtColor(image2, tarImage, C.CV_BGR2GRAY)C.cvCalcHist((**C.IplImage)(unsafe.Pointer(&srcImage)), histogram1, 0, nil)C.cvCalcHist((**C.IplImage)(unsafe.Pointer(&tarImage)), histogram2, 0, nil)C.cvNormalizeHist(histogram1, 1);  C.cvNormalizeHist(histogram2, 1);  fmt.Println(C.cvCompareHist(histogram1, histogram2, C.CV_COMP_CORREL))    C.cvReleaseHist(&histogram1)C.cvReleaseHist(&histogram2)opencv.WaitKey(0)
}

最后进行功能验证,如果两张图片相同,得出的结果为1,如果两张图片的人脸相似度越高,则越趋向于1

基于golang的opencv人脸比对相关推荐

  1. 精简 opencv python_基于Python的OpenCV人脸检测!简直不要太简单!

    一.文章概述 注意:本文只是人脸检测,人脸识别的实现请参见本人另一篇博客:基于OpenCV+TensorFlow+Keras实现人脸识别 本文将要讲述的是Python环境下如何用OpenCV检测人脸, ...

  2. 基于Python的OpenCV人脸检测

    一.文章概述 注意:本文只是人脸检测,人脸识别的实现请参见本人另一篇博客:基于OpenCV+TensorFlow+Keras实现人脸识别 本文将要讲述的是Python环境下如何用OpenCV检测人脸, ...

  3. opencv c++ 寻找矩形框_基于Python的OpenCV人脸检测!OpenCV太强了!

    一.文章概述 本文将要讲述的是Python环境下如何用OpenCV检测人脸,本文的主要内容分为: 1.检测图片中的人脸 2.实时检测视频中出现的人脸 3.用运设备的摄像头实时检测人脸 二:准备工作 提 ...

  4. 基于Python的OpenCV人脸检测!OpenCV太强了!

    一.文章概述 本文将要讲述的是Python环境下如何用OpenCV检测人脸,本文的主要内容分为: 1.检测图片中的人脸 2.实时检测视频中出现的人脸 3.用运设备的摄像头实时检测人脸 二:准备工作 提 ...

  5. 基于Python的OpenCV+TensorFlow+Keras人脸识别实现

    前言:本节要讲的人脸识别主要是借鉴了 一位研究生前辈的文章 我只是在他的基础上进行了改动,让代码能在现在的TensorFlow2.X 等的环境下运行 先看一下效果图 完整工程及源代码请点击链接下载:人 ...

  6. python dlib caffe人脸相似度_基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【一】如何配置caffe属性表...

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...

  7. 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【三】VGG网络进行特征提取

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...

  8. 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【六】设计人脸识别的识别类...

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...

  9. python dlib opencv人脸识别准确度_基于dlib和opencv库的人脸识别

    基于dlib和opencv库的人脸识别 需下载68个特征点的人脸检测模型: http://dlib.net/files/ 文件名为shape_predictor_68_face_landmarks.d ...

最新文章

  1. 别再SOTA了,那叫“微调”!Science发文炮轰论文灌水
  2. 使用wireshark分析TLSv2(详细)
  3. cgi web 调用多次启动_CGI、FastCGI和PHPFPM有什么关系呢?
  4. Linux 浏览网址汇集
  5. array关于map,reduce,filter的用法
  6. sakura计算机谱子,【14.08.13自拟】SAKURA急求生物股长的简谱
  7. c语言写天气预报程序,微信小程序实现天气预报功能
  8. vue菜单点击html,基于vue.js实现侧边菜单栏
  9. Linux使用pyinstaller 编译py成可执行程序
  10. java中的getinstance_Java中的KeyPairGenerator getInstance()方法
  11. 【MATLAB】三维绘图 三维数据插值
  12. c语言鸡尾酒排序的例子,经典算法——鸡尾酒排序(冒泡算法改良)
  13. 115CSS3+JS:胶卷式放映
  14. python采用面向对象编程模式吗_python面向对象编程练习
  15. 有关于进程,线程and协程
  16. ro模式数据库mysql_ro数据库-和ro数据库相关的内容-阿里云开发者社区
  17. 【RMF】ros机器人中间件框架学习系列一:了解原理
  18. 锂电池电量百分比计算_锂电池电压电量关系
  19. 【MySQL】<关系型数据库>Linux安装MySQL(无错完整)
  20. 根据HSV阈值对图像二值化

热门文章

  1. 前端开发应该如何准备面试,满满干货指导
  2. latex 长公式换行括号-换行后括号大小不一致
  3. c语言 putchar 转义字符,putchar - [ C语言中文开发手册 ] - 在线原生手册 - php中文网...
  4. android原始数据转欧拉角,Android获取欧拉角
  5. 【大数据趋势】12月3日纳指大概率反弹到黄金分割附近,然后下跌,之后进入趋势选择期,恒指会跟随。感觉或许有什么大事情要发生,瞎猜中。
  6. 华为S5720S-28P-SI-AC通过串口配置
  7. 难过的时候看一看,再坏能有多坏
  8. 在大数据冲击下的工业质量管理对策
  9. Linux —进程管理命令
  10. 在vue脚手架环境利用vant组件简单实现移动端购物商城系统