完整opencv(emgucv)人脸、检测、采集、识别、匹配、对比

2023-05-16

//成对几何直方图匹配        
      public static string MatchHist()         
      {
          string haarXmlPath = @"haarcascade_frontalface_alt_tree.xml";
          HaarCascade haar = new HaarCascade(haarXmlPath);
          int[] hist_size = new int[1] { 256 };//建一个数组来存放直方图数据
          //IntPtr img1 = CvInvoke.cvLoadImage("", Emgu.CV.CvEnum.LOAD_IMAGE_TYPE.CV_LOAD_IMAGE_ANYCOLOR); //根据路径导入图像
               
          //准备轮廓 
          Image<Bgr, Byte> image1 = new Image<Bgr, byte>("D:\\code\\picture\\frunck.jpg");
          Image<Bgr, Byte> image2 = new Image<Bgr, byte>("D:\\code\\picture\\lena.jpg");
          MCvAvgComp[] faces = haar.Detect(image1.Convert<Gray, byte>(), 1.4, 1, Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(20, 20), Size.Empty);
          MCvAvgComp[] faces2 = haar.Detect(image2.Convert<Gray, byte>(), 1.4, 1, Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(20, 20), Size.Empty);

          int l1 = faces.Length;
          int l2 = faces2.Length;
          image1 = image1.Copy(faces[0].rect);
          image2 = image2.Copy(faces2[0].rect);
          Image<Gray, Byte> imageGray1 = image1.Convert<Gray, Byte>();
          Image<Gray, Byte> imageGray2 = image2.Convert<Gray, Byte>();
          Image<Gray, Byte> imageThreshold1 = imageGray1.ThresholdBinaryInv(new Gray(128d), new Gray(255d));
          Image<Gray, Byte> imageThreshold2 = imageGray2.ThresholdBinaryInv(new Gray(128d), new Gray(255d));
          //Contour<Point> contour1 = imageThreshold1.FindContours(Emgu.CV.CvEnum.CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_SIMPLE, Emgu.CV.CvEnum.RETR_TYPE.CV_RETR_EXTERNAL);
          Contour<Point> contour1 = imageThreshold1.FindContours();
          Contour<Point> contour2 = imageThreshold2.FindContours();
          IntPtr HistImg1 = CvInvoke.cvCreateHist(1, hist_size, Emgu.CV.CvEnum.HIST_TYPE.CV_HIST_ARRAY, null, 1); //创建一个空的直方图
          IntPtr HistImg2 = CvInvoke.cvCreateHist(1, hist_size, Emgu.CV.CvEnum.HIST_TYPE.CV_HIST_ARRAY, null, 1);

    //CvInvoke.cvHaarDetectObjects();

          IntPtr[] inPtr1 = new IntPtr[1] { imageThreshold1 };
          IntPtr[] inPtr2 = new IntPtr[1] { imageThreshold2 };
          CvInvoke.cvCalcHist(inPtr1, HistImg1, false, IntPtr.Zero); //计算inPtr1指向图像的数据,并传入HistImg1中
          CvInvoke.cvCalcHist(inPtr2, HistImg2, false, IntPtr.Zero);
          Stopwatch sw = new Stopwatch(); 
          sw.Start(); 
          double compareResult;
          Emgu.CV.CvEnum.HISTOGRAM_COMP_METHOD compareMethod =  Emgu.CV.CvEnum.HISTOGRAM_COMP_METHOD.CV_COMP_BHATTACHARYYA;
          CvInvoke.cvNormalizeHist(HistImg1, 1d); //直方图对比方式
          CvInvoke.cvNormalizeHist(HistImg2, 1d);
          compareResult = CvInvoke.cvCompareHist(HistImg1, HistImg2, compareMethod);
          //compareResult = CvInvoke.cvMatchShapes(HistImg1, HistImg2, Emgu.CV.CvEnum.CONTOURS_MATCH_TYPE.CV_CONTOURS_MATCH_I3, 1d);
          sw.Stop();
          double time = sw.Elapsed.TotalMilliseconds;
          return string.Format("成对几何直方图匹配(匹配方式:{0}),结果:{1:F05},用时:{2:F05}毫秒\r\n", compareMethod.ToString("G"), compareResult, time);
         
      } 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

完整opencv(emgucv)人脸、检测、采集、识别、匹配、对比 的相关文章

  • 使用 openCV 锐化视频图像

    我想使用 OpenCV 锐化我的图像 我在网上查看了一个示例 该示例正在对灰度图像执行锐化 我尝试了它 它工作得很好 然而 我现在尝试做同样的事情 但使用 RGB 颜色 所以我分别在三个通道上执行相同的功能 但它没有给我任何结果 图像与原始
  • caffe安装:opencv libpng16.so.16链接问题

    我正在尝试在 Ubuntu 14 04 机器上使用 python 接口编译 caffe 我已经安装了 Anaconda 和 opencvconda install opencv 我还安装了咖啡中规定的所有要求 并更改了注释块makefile
  • 如何在没有 OpenCv Manager 的情况下运行 OpenCV 代码

    我正在使用 OpenCV4Android 版本 2 4 10 并在 Samsung Galayx GT I9300 上测试我的代码 我遇到的问题是 我必须从 Play 商店下载 Opencv Manager 以便我的 opencv 代码运行
  • OpenCV Python 删除图像中的某些对象

    我正在使用带有 opencv 和 numpy 的 python 来检测天文中的星星 例如这个1 https i stack imgur com AKwEJ jpg图片 使用模板匹配 我可以用阈值检测星星 单击 2 2 https i sta
  • 针对不同相机(RGB 和红外)的 StereoCalibrate

    我在校准两个摄像头时遇到问题 第一个是 RGB 第二个是红外 它们有不同的分辨率 我调整了大小并裁剪了更大的图像 焦距等等 例子 RGB 1920x1080 Infrared 512x424 如何相互校准它们 我应该在stereoCalib
  • 使用 cvcreateimage 使用 opencv 创建简单的黑色图像

    来自 OpenCV 新手的非常基本的问题 我只想创建一个图像 每个像素设置为0 黑色的 我在 main 函数中使用了以下代码 IplImage imgScribble cvCreateImage cvSize 320 240 8 3 我得到
  • 构建 OpenCV 时出错 :: MonitorFromRect 未在此范围内声明

    我试图建立OpenCV version 2 4 8与它一起使用CodeBlocks and MinGw 我按照以下指示进行操作here http kevinhughes ca tutorials opencv install on wind
  • 附加信息:OpenCV:使用 c# 的不同大小的对象

    目前 我的 EmguCV c 代码面临问题 我试图从数据库中识别我的图像 但它不起作用 一旦检测到我的脸 它就会崩溃 然后会出现此错误 附加信息 OpenCV 不同大小的对象 我尝试寻找这个错误 但我一无所知 这是我的代码 Action f
  • 用于 C++ 中图像分析的 OpenCV 二进制图像掩模

    我正在尝试分析一些图像 这些图像的外部周围有很多噪声 但内部有一个清晰的圆形中心 中心是我感兴趣的部分 但外部噪声正在影响我对图像的二进制阈值处理 为了忽略噪音 我尝试设置一个已知中心位置和半径的圆形蒙版 从而使该圆之外的所有像素都更改为黑
  • 双击定时器事件

    我正在开发一个应用程序 将用户的眼球运动与光标运动映射起来 从而开发一个免提光标控制系统 我正在使用 Open CV 库的 NET Wrapper for C 即 Emgu CV 进行开发 我被困在想要打开文件 文件夹的地方 这样当光标放在
  • 有没有办法检测图像是否模糊? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道是否有一种方法可以通过分析图像数据来确定图像是否模糊 估计图像清晰度的另一种非常简单的方法是使用拉普拉斯 或 LoG 滤波器并
  • OpenCV 中“IplImage”和“CvMat”的全称是什么?

    有一个IplImage and CvMat在 OpenCV 中 他们的全名是什么 IPL in IplImage代表英特尔处理库 这是Intel维护OpenCV时的残余 CV in cvMat代表计算机视觉矩阵 这是图形中常用的数据结构 I
  • 如何使用 OpenCV 从图像中获取调色板 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想提取图像的调色板 类似于此 来自 我需要它来提取特定的颜色 如黄色 绿色和棕色 并显示该颜色覆盖的区域的百分比 另外 我可以添加更
  • 如何使用Java OpenCV

    我正在使用图像处理开始我的最后一年项目 并希望完成类似的事情this http www youtube com watch v EPai5f2sWaA 它是人体和物体检测的结合 我真的很想用 Java 来做 因为我在 C 方面的经验很少 I
  • OpenCV 完美识别物体

    我有一个应用程序 我想一次跟踪 2 个在图片中相当小的对象 该应用程序应该在 Android 和 iPhone 上运行 因此算法应该是高效的 对于我的客户来说 如果我们提供一些模式以及附加到要跟踪的对象的软件 以获得易于识别的目标 那就完全
  • 对同色像素块的边界进行着色

    我有一张有 5 种不同颜色的图像 在这种情况下 随机生成 w h 40 27 img Image new RGB w h pixels img load available colors r 255 13 18 b 72 64 255 y
  • ValueError:当数组不是序列时设置带有序列的数组元素

    您好 此代码旨在存储使用 open cv 绘制的矩形的坐标 并将结果编译为单个图像 import numpy as np import cv2 im cv2 imread 1 jpg im3 im copy gray cv2 cvtColo
  • VideoCapture 未检测到 uEye 摄像头

    我的 uEye 相机遇到了一个问题 使用我的笔记本电脑摄像头 id 0 或 USB 上的网络摄像头 id 1 此行完美运行 TheVideoCapturer open 1 TheVideoCapturer 属于 VideoCapture 类
  • GrabCut - bgdModel 和 fgdModel 为空 - 断言错误

    我正在尝试使用 OpenCV2 1 C 中的 GrabCut 算法进行图像分割 这是我的代码 Mat rgbWorkImage imread argv 1 Mat mask mask Scalar 0 Mat bgdModel fgdMod
  • Android API人脸检测与OpenCV/JavaCV人脸检测

    我在 Android 设备上使用了本地 Android 人脸检测 但它似乎很慢 而且我不太确定其可靠性 我还使用了 OpenCV 的人脸检测 但仅限于 PC 而不是 Android 设备 对于 Android 我猜我必须使用 JavaCV

随机推荐

  • CPU主频频率越高,手机运行速度就越快吗?

    本文链接 xff1a https blog csdn net openkado article details 24087305 问 xff1a CPU频率越高 xff0c 手机速度就越快吗 xff1f 1 7GHz处理器的手机肯定比1 2
  • 多核编程与单核多线程编程

    并发 xff1a 时间段内有很多的线程或进程在执行 xff0c 但何时间点上都只有一个在执行 xff0c 多个线程或进程争抢时间片轮流执行 并行 xff1a 时间段和时间点上都有多个线程或进程在执行 单核cpu的话只能是并发 xff0c 多
  • 多线程与单核cpu,多核cpu概念

    1 多线程在单核和多核CPU上的执行效率问题的讨论 a1 多线程在单cpu中其实也是顺序执行的 xff0c 不过系统可以帮你切换那个执行而已 xff0c 其实并没有快 xff08 反而慢 xff09 多个cpu的话就可以在两个cpu中同时执
  • 多CPU,多核,多进程,多线程以及进程和线程的简单理解以及区别

    当面临这些问题的时候 xff0c 有两个关键词无法绕开 xff0c 那就是并行和并发 首先 xff0c 要先了解几个概念 xff1a 1 进程是程序的一次执行 2 进程是资源分配的基本单位 3 一个进程可以包括多个线程 4 在单CPU计算机
  • 并行、并发,两者的区别

    并发和并行相似但又是两个不同的概念 xff0c 并行是指两个或者多个时间在同一时刻发生 xff0c 就好比如多个程序同时运行 而并发是指两个或者多个时间在同一时间间隔内发生 在多道程序环境下 xff0c 并发性是指在一段时间内宏观上有多个程
  • Ubuntu VNC安装与遇到的问题

    Linux下VNC server可选的很多 xff0c vnc4server tightvnc xff0c 我更喜欢tigervnc unity桌面环境在vnc中不能正常使用 xff0c 我翻遍互联网还是没找到很好的解决办法 xff0c 退
  • CPU的主频,总线频率和L2缓存对电脑的性能有哪些影响

    CPU是Central Processing Unit的缩写 xff0c 即中央处理器 CPU发展至今 xff0c 其中所集成的电子元件也越来越多 xff0c 上万个晶体管构成了CPU的内部结构 那么这上百万个晶体管是如何工作的呢 xff1
  • 寄存器(cpu工作原理)

    来源 xff1a 王爽老师的 汇编语言 1 一个典型的CPU由运算器 控制器 寄存器等器件组成 xff0c 这些器件靠内部总线相连 区别 xff1a 内部总线实现CPU内部各个器件之间的联系 外部总线实现CPU和主板上其它器件的联系 808
  • 寄存器、存储器、内存的区别

    从范围来看 xff0c 它们所指的范畴不一样 寄存器是中央处理器内的组成部份 它跟CPU有关 寄存器是有限存贮容量的高速存贮部件 xff0c 它们可用来暂存指令 数据和位址 在中央处理器的控制部件中 xff0c 包含的寄存器有指令寄存器 I
  • 寄存器(CPU的工作原理)

    通用寄存器 8086CPU有14个寄存器 xff0c 他们的名字称为诶 xff1a AX BX CX DX SI DI SP BP IP CS SS DS ES PSW 8086CPU所有的寄存器都是16位的 xff0c 可以存放两个字节
  • CPU,寄存器,内存三者的关系

    一 皇帝身边的小太监 寄存器 不知道什么是寄存器 xff1f 那见过太监没有 xff1f 没有 xff1f 其实我也没有 没见过不要紧 xff0c 见过就麻烦大了 xff0c 大家都看过古装戏 xff0c 那些皇帝们要阅读奏章的时候 xff
  • 内网和外网通信的问题

    各位大神 xff0c 我把两台电脑 xff0c 其中一台通过路由器映射了 xff0c 也就成为了所为的服务器了 xff0c 另一台也就是处在内网的 xff0c 也就是我们平时一般人的电脑 xff0c 也就是客户端了 xff0c 那么客户端是
  • OpenCV进行图像相似度对比的几种办法

    转载请注明出处 xff1a http blog csdn net wangyaninglm article details 43853435 xff0c 来自 xff1a shiter编写程序的艺术 对计算图像相似度的方法 xff0c 本文
  • Python+Opencv识别两张相似图片

    在网上看到python做图像识别的相关文章后 xff0c 真心感觉python的功能实在太强大 xff0c 因此将这些文章总结一下 xff0c 建立一下自己的知识体系 当然了 xff0c 图像识别这个话题作为计算机科学的一个分支 xff0c
  • OpenCV进行图像相似度对比的几种办法

    1 直方图方法 方法描述 xff1a 有两幅图像patch 当然也可是整幅图像 xff0c 分别计算两幅图像的直方图 xff0c 并将直方图进行归一化 xff0c 然后按照某种距离度量的标准进行相似度的测量 方法的思想 xff1a 基于简单
  • 比较两幅图像的相似度

    现在以图搜图的功能比较火热 xff0c 很好奇其原理 简单的搜索学习得知 xff0c 实现相似图片搜索的关键技术是 感知哈希算法 xff0c 作用是对每一张图片按照某种规律生成一个对应的指纹字符串 比较不同图片之间的指纹字符串 xff0c
  • 查找文献方法整理

    1 dblp computer science bibliography 在搜索框查找文献关键字 xff0c 或文献标题 xff0c 右边可以筛选 找到想找的论文之后 xff0c 可以将鼠标移到view xff0c 找到原网站 有些网站可以
  • OpenCV进行图像相似度对比的几种办法

    平均哈希算法 实现步骤 缩小尺寸 xff1a 将图像缩小到8 8的尺寸 xff0c 总共64个像素 这一步的作用是去除图像的细节 xff0c 只保留结构 明暗等基本信息 xff0c 摒弃不同尺寸 比例带来的图像差异 xff1b 简化色彩 x
  • opencv学习笔记(六)直方图比较图片相似度

    opencv学习笔记 xff08 六 xff09 直方图比较图片相似度 opencv提供了API来比较图片的相似程度 xff0c 使我们很简单的就能对2个图片进行比较 xff0c 这就是直方图的比较 xff0c 直方图英文是histogra
  • 完整opencv(emgucv)人脸、检测、采集、识别、匹配、对比

    成对几何直方图匹配 public static string MatchHist string haarXmlPath 61 64 34 haarcascade frontalface alt tree xml 34 HaarCascade