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 ...
随机推荐
- 函数fsp_header_init
/**********************************************************************//** Initializes the space he ...
- JAVA将Excel中的报表导出为图片格式(一)问题背景
如题所示,先抛出一个问题,如何使用JAVA将Excel中的报表导出为图片格式? 首先说一下这个问题的背景,也就是为什么博主会碰到这个问题 随着微信,易信之流大行其道,企业内部的办公交流.绩效考评甚至考 ...
- BZOJ2226: [Spoj 5971] LCMSum
题解: 考虑枚举gcd,然后问题转化为求<=n且与n互质的数的和. 这是有公式的f[i]=phi[i]*i/2 然后卡一卡时就可以过了. 代码: #include<cstdio> # ...
- Websocket和PHP Socket编程
本来是搜一些html5 websocket资料看的,结果被引去看了php的socket编程.下面是一些简单的例子,在命令行运行php脚本就行 [命令行运行PHP]PHP中有一个php.exe文件,可以 ...
- error LNK2019: 无法解析的外部符号 __imp___CrtDbgReportW
error LNK2005 and error LNK2019 error LNK2019: unresolved external symbol __imp___CrtDbgReportW refe ...
- UVA 1001 Say Cheese 奶酪里的老鼠(最短路,floyd)
题意:一只母老鼠想要找到她的公老鼠玩具(cqww?),而玩具就丢在一个广阔的3维空间(其实可以想象成平面)上某个点,而母老鼠在另一个点,她可以直接走到达玩具的位置,但是耗时是所走过的欧几里得距离*10 ...
- 私有pod简记
http://www.jianshu.com/p/7a82e977281c http://www.jianshu.com/p/ddc2490bff9f 两个工程 1 代码工程 在github上创建一个 ...
- Android中FragmentPagerAdapter对Fragment的缓存(二)
上一篇我们谈到了,当应用程序恢复时,由于FragmentPagerAdapter对Fragment进行了缓存的读取,导致其并未使用在Activity中新创建的Fragment实例.今天我们来看如何解决 ...
- Android Message和obtainMessage的区别
类概述 定义一个包含任意类型的描述数据对象,此对象可以发送给Handler.对象包含两个额外的int字段和一个额外的对象字段,这样可以使得在很多情况下不用做分配工作. 尽管Message的构造器是公开 ...
- C#的switch与二维数组.....
今天由于工作上的需要, 改了几行C# 的代码, 发现有一些细微的语法区别,与C++, 像switch语句那样, 我一般不会在default后面加上break,语句, 可是发现如果不加上的话,就会报下 ...