opencv 矩阵的相似性对比 (图片之间比较)
测试图片:
code:
#include <opencv\cv.h>
#include <opencv\highgui.h>
#include <opencv\cxcore.h>
#include <stdlib.h>
#include <stdio.h> /*
*函数功能:获取输入图像 的轮廓
*
*输入:
*srcIn : 单通道图像
*
*返回:
*CvSeq* : 存储轮廓信息
*
*/ CvSeq* getImageContour(IplImage* srcIn){ IplImage* src;
src = cvCreateImage(cvGetSize(srcIn),8,1); //拷贝图像
cvCopy(srcIn,src); //创建空间
CvMemStorage* mem = cvCreateMemStorage(0);
//结构体 (mem和seq属于同一个地址<当释放的时候只要释放一个就行了>)
CvSeq* seq; if(!mem){
printf("mem is null");
} //二值化图像
cvThreshold(src,src,100,255,0); //计算图像轮廓 计算后的轮廓信息不能释放 在后面需要用到
cvFindContours(src,mem,&seq,sizeof(CvContour),CV_RETR_CCOMP); //释放图像空间
cvReleaseImage(&src); //返回轮廓信息
return seq; } int main(int argc, char* argv[]){ //加载图像1
IplImage* src1 = cvLoadImage("C:\\Users\\zxl\\Desktop\\1.png",CV_LOAD_IMAGE_GRAYSCALE);
//获取图像1的轮廓
CvSeq* contour1;
contour1 = getImageContour(src1); //加载图像2
IplImage* src2 = cvLoadImage("C:\\Users\\zxl\\Desktop\\3.png",CV_LOAD_IMAGE_GRAYSCALE);
//获取图像2的轮廓
CvSeq* contour2;
contour2 = getImageContour(src2); //进行比对 -- 比较这两个轮廓所对应的HU矩的距离 有多远
double result;
//cvMatchShapes函数参数(轮廓1,轮廓2,方法)
//计算第一个轮廓的普通矩和中心距 , 然后计算这个矩形的HU矩(HU距的7个数值保存在ma的数组里)
//的哥个轮廓同上(HU距保存在mb中)
//然后比较这两个HU距的相似性
//方法参数有3个 参数分别是1,2,3 三种计算方法
result = cvMatchShapes(contour1,contour2,1); //输出结果 结果越小 相似度越高
printf("result is %f \n",result); //释放轮廓存储空间
cvReleaseMemStorage(&contour1->storage);
cvReleaseMemStorage(&contour2->storage); //释放图像空间
cvReleaseImage(&src1);
cvReleaseImage(&src2); return 0; }
opencv 矩阵的相似性对比 (图片之间比较)的更多相关文章
- opencv 矩阵操作
OpenCv矩阵操作 有很多函数有mask,代表掩码,如果某位mask是0,那么对应的src的那一位就不计算,mask要和矩阵/ROI/的大小相等 大多数函数支持ROI,如果图像ROI被设置,那么只处 ...
- VS2010 / MFC + OpenCV 2.4.1打开图片
Windows 7 x64,VS2010 / MFC + OpenCV 2.4.1打开图片显示到Picture控件中. OpenCV 2.2.OpenCV 2.3同样适用. 工具/原料 WinXP / ...
- 搭建Android+QT+OpenCV环境,实现“单色图片着色”效果
OpenCV是我们大家非常熟悉的图像处理开源类库:在其新版本将原本在Contrib分库中的DNN模块融合到了主库中,并且更新了相应文档.这样我们就能够非常方便地利用OpenCV实 ...
- fontsize可以解决img标签插入图片之间的缝隙
当我们用img标签连续插入多张图片的时候,图片和图片之间会出现缝隙,通常我们的做法是用DIV将图片包起来进行浮动来解决这个问题,但是还有一种解决方法是在img的父级元素里面设置font-size:0来 ...
- img图片之间的间距问题
[问题]页面中如果有多张图片,那么图片之间会有一些间距,在某些情况下(如切好的图片再次拼接),在显示上就会出现一些问题.效果如下: 对应代码: <div class="f0" ...
- opencv矩阵总结
OpenCV 矩阵操作 CvMat 转自:http://hi.baidu.com/xiaoduo170/blog/item/10fe5e3f0fd252e455e72380.html 每回用矩阵都要查 ...
- Python3.0以上版本在对比图片相似中的应用
首先声明一下,代码是从网上找到的,只是本人作以简单的修改. 请大家尊重原创. 我本地用到的是 Python 3.4 以及 Pillow (4.0.0) 第三方包. 方法一. #!/usr/bin ...
- canvas和图片之间的互相装换
canvas和图片之间的互相装换 一.总结 一句话总结:一个是canvas的drawImage方法,一个是canvas的toDataURL方法 canvas drawImage() Image对象 c ...
- UIScrollView浏览一组图片,且图片与图片之间有间隔
---恢复内容开始--- UIScrollView是可以浏览一组view的,只要将其属性 pagingEnabled设置为true就可以了.具体过程是这样的, 1:将一组图片按照从左到右的顺序添加到U ...
随机推荐
- HDU 4906 状态压缩dp
Our happy ending Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Other ...
- build path功能详解
在项目上右键>Build path>Config build path “web project”中,一般把"src"设置为source folder,把WEB-INF ...
- ASP.NET中POST提交数据并跳转页面
需求:先Post提交数据,然后跳转到目标页面 找了好久才发现这个神奇的类HttpHelper.原理很简单,利用html的from表单拼接,然后执行 使用方法: NameValueCollection ...
- Oracle 数据库整理表碎片
Oracle 数据库整理表碎片 转载:http://kyle.xlau.org/posts/table-fragmentation.html 表碎片的来源 当针对一个表的删除操作很多时,表会产生大量碎 ...
- Struts2配置
1. 设定server a) window– preferences – myeclipse – servers – tomcat – 6.x b) 选择tomcat h ...
- Android 系统内置App JNI
说明 将Android应用作为系统内置遇到一些问题: 一个是使用Android源码的mmm命令生成的JNI名字和使用NDK生成的JNI的名字是不一样的: 另外就是AndroidManifest.xml ...
- ffmpeg开发指南
FFmpeg是一个集录制.转换.音/视频编码解码功能为一体的完整的开源解决方案.FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用.FFmpeg支持MPEG.DivX.M ...
- codeforces 687C - The Values You Can Make 简单dp
题意:一个数组a[i],你可以挑出若干个数(只能挑一次)加起来等于k, 针对每一种方案,你可以选出这若干个数的子集来组合新数 最后所有的方案能组合出多少种数 分析:一看数据范围n,k<=500 ...
- 【转】ASP.NET网站怎么发布web项目程序和怎么部署
如何发布: http://jingyan.baidu.com/article/ca00d56c7303ffe99eebcfb0.html windows7 iis安装与配置 如何部署: http:// ...
- python中yield用法
在介绍yield前有必要先说明下Python中的迭代器(iterator)和生成器(constructor). 一.迭代器(iterator) 在Python中,for循环可以用于Python中的任何 ...