矩阵和图像的操作

(1)cvSetIdentity函数

其结构

void cvSetIdentity(//将矩阵行与列相等的元素置为1。其余元素置为0
CvArr* arr//目标矩阵
);

实例代码

#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{ double a[3][3] =
{
{1,2,3},
{4,5,6},
{7,8,9}
}; CvMat va = cvMat(3,3, CV_64FC1,a); cout<<"目标矩阵:"<<endl; for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
printf("%f\t",cvmGet(&va,i,j));
cout << endl;
} cvSetIdentity(&va); cout<<"结果矩阵:"<<endl; for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
printf("%f\t",cvmGet(&va,i,j));
cout << endl;
} getchar();
return 0; }

输出结果

(2)cvSolve函数

其结构

int cvSolve(//求解线性方程组解 src*dst = src2
const CvArr* src1,//系数矩阵
const CvArr* src2,//常数矩阵
CvArr* dst,//解矩阵
int method = CV_LU//用法
);

实例代码

#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <iostream>
using namespace std; int main()
{
cout<< "计算A*X = B中的解X:" <<endl;
double a[3][3] =
{
{1,0,0},
{0,2,0},
{0,0,2}
}; CvMat va = cvMat(3,3,CV_64FC1,a); cout<<"A矩阵:"<<endl; for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
printf("%f\t",cvmGet(&va,i,j));
cout << endl;
} double b[3]={1,2,2}; CvMat vb = cvMat(3,1,CV_64FC1,b); cout<<"B矩阵:"<<endl; for(int i=0;i<3;i++)
{
printf("%f\t",cvmGet(&vb,i,0));
cout << endl;
} double c[3]={0,0,0}; CvMat vc = cvMat(3,1,CV_64FC1,c); cvSolve(&va,&vb,&vc); cout<<"解为:"<<endl; for(int i=0;i<3;i++)
{
printf("%f\t",cvmGet(&vc,i,0));
cout << endl;
} getchar();
return 0;
}

输出结果

(3)cvSplit函数

其结构

void cvSplit(//分解多通道图像为各个单通道
const CvArr* src,//目标图像
CvArr* dst0,//单通道图像1
CvArr* dst1,//单通道图像2
CvArr* dst2,//单通道图像3
CvArr* dst3//单通道图像4
);

实例代码

#include <cv.h>
#include <highgui.h>
#include <stdio.h> int main()
{
IplImage *src1,*dst1,*dst2,*dst3,*dst4;
src1=cvLoadImage("3.jpg",1);
dst1 = cvCreateImage(cvSize(src1->width, src1->height), IPL_DEPTH_8U, 1);
dst2 = cvCreateImage(cvSize(src1->width, src1->height), IPL_DEPTH_8U, 1);
dst3 = cvCreateImage(cvSize(src1->width, src1->height), IPL_DEPTH_8U, 1); cvSplit(src1, dst1, dst2, dst3, 0); cvShowImage("1",src1);
cvShowImage("2",dst1);
cvShowImage("3",dst2);
cvShowImage("4",dst3); cvWaitKey();
return 0;
}

输出结果

(4)cvSub函数

其结构

void cvSub(//两个矩阵做减法
const CvArr* src1,//被减矩阵
const CvArr* src2,//减矩阵
CvArr* dst,//结果矩阵
const CvArr* mask = NULL//矩阵开关
);

实例代码

#include <cv.h>
#include <highgui.h>
#include <stdio.h> int main()
{
IplImage *src1,*src2,*src3; src1 = cvLoadImage("3.jpg");
src2 = cvLoadImage("1.jpg");
src3 = cvLoadImage("7.jpg"); cvSub(src1,src2,src3); cvShowImage("1",src1);
cvShowImage("2",src2);
cvShowImage("3",src3); cvWaitKey();
return 0;
}

输出结果

(5)cvSubS函数

其结构

void cvSubS(//矩阵和值做减法
const CvArr* src,//被减矩阵
CvScalar value,//减数值
CvArr* dst,//结果矩阵
const CvArr* mask = NULL//矩阵“开关”
);

实例代码

#include <cv.h>
#include <highgui.h>
#include <stdio.h> int main()
{
IplImage *src1, *src2;
src1 = cvLoadImage("1.jpg");
src2 = cvLoadImage("7.jpg"); CvScalar cs;
cs.val[0] = 0;
cs.val[1] = 255;
cs.val[2] = 0;
cs.val[3] = 0; cvSubS(src1,cs,src2); cvShowImage( "測试1", src1);
cvShowImage( "測试2", src2);
cvWaitKey();
return 0;
}

输出结果

(6)cvSubRS函数

其结构

void cvSubRS(//给定值减去矩阵
const CvArr* src,//减矩阵
CvScalar value,//被减数值
CvArr* dst,//结果矩阵
const CvArr* mask = NULL//矩阵“开关”
);

实例代码

#include <cv.h>
#include <highgui.h>
#include <stdio.h> int main()
{
IplImage *src1, *src2;
src1 = cvLoadImage("1.jpg");
src2 = cvLoadImage("7.jpg"); CvScalar cs;
cs.val[0] = 0;
cs.val[1] = 255;
cs.val[2] = 0;
cs.val[3] = 0; cvSubRS(src1,cs,src2); cvShowImage( "測试1", src1);
cvShowImage( "測试2", src2);
cvWaitKey();
return 0;
}

输出结果

to be continued

《学习opencv》笔记——矩阵和图像操作——cvSetIdentity,cvSolve,cvSplit,cvSub,cvSubS and cvSubRS的更多相关文章

  1. 《学习opencv》笔记——矩阵和图像操作——cvCalcCovarMatrix,cvCmp and cvCmpS

    矩阵和图像的操作 (1)cvCalcCovarMatrix函数 其结构 void cvCalcCovarMatrix(计算给定点的均值和协方差矩阵 const CvArr** vects,//给定向量 ...

  2. 《学习opencv》笔记——矩阵和图像操作——cvAnd、cvAndS、cvAvg and cvAvgSdv

    矩阵和图像的操作 (1)cvAnd函数 其结构 void cvAnd( //将src1和src2按像素点取"位与运算" const CvArr* src1,//第一个矩阵 cons ...

  3. 《学习opencv》笔记——矩阵和图像操作——cvAbs,cvAbsDiff and cvAbsDiffS

    矩阵和图像的操作 (1)cvAbs,cvAbsdiff,cvAbsDiffS 它们的结构为: void cvAbs( //取src中元素的绝对值,写到dst中 const CvArr* src, co ...

  4. 《学习opencv》笔记——矩阵和图像操作——cvInRange,cvInRangeS,cvInvert and cvMahalonobis

    矩阵和图像的操作 (1)cvInRange函数 其结构 void cvInRange(//提取图像中在阈值中间的部分 const CvArr* src,//目标图像 const CvArr* lowe ...

  5. 《学习opencv》笔记——矩阵和图像操作——cvCrossProduct and cvCvtColor

    矩阵和图像的操作 (1)cvCrossProduct函数 其结构 void cvCrossProdust(//计算两个三维向量的叉积 const CvArr* src1, const CvArr* s ...

  6. 《学习opencv》笔记——矩阵和图像操作——cvConvertScale,cvConvertScaleAbs,cvCopy and cvCountNonZero

    矩阵和图像的操作 (1)cvConvertScale函数 其结构: void cvConvertScale( //进行线性变换,将src乘scale加上shift保存到dst const CvArr* ...

  7. opencv笔记2:图像ROI

    time:2015年 10月 03日 星期六 12:03:45 CST # opencv笔记2:图像ROI ROI ROI意思是Region Of Interests,感兴趣区域,是一个图中的一个子区 ...

  8. OpenCV —— 矩阵和图像操作

    cvAbs , cvAbsDiff , cvAbsDiffS cvAdd , cvAddS , cvAddWeighted(可添加权重) #include <cv.h> #include ...

  9. OpenCV利用矩阵实现图像旋转

    利用OpenCV的矩阵操作实现图像的逆时针旋转90度操作 代码 Mat src = imread("C:\\Users\\fenggl\\Desktop\\测试.jpg",MREA ...

随机推荐

  1. 素数环(C - 暴力求解)

    素数环(暴力)(紫书194页) Description   A ring is composed of n (even number) circles as shown in diagram. Put ...

  2. PigCms 回复消息 "域名授权错误! 您使用的微信平台或源码为盗版"

    本文地址:http://duwei.cnblogs.com/ Pigcms 将自动回复的API 写死了, 这里提供一个可用的API 在 PigCms/Lib/Action/Home/Weixinact ...

  3. USACO Hamming Codes DFS 构造

    我还是用了很朴素的暴力匹配A了这题,不得不感叹USACO时间放的好宽... /* ID: wushuai2 PROG: hamming LANG: C++ */ //#pragma comment(l ...

  4. Spring Boot 探索系列 - 自动化配置篇

    26. Logging Prev  Part IV. Spring Boot features  Next 26. Logging Spring Boot uses Commons Logging f ...

  5. Mysql 连接查询 Mysql支持的连接查询有哪些

    CREATE TABLE `chx` (   `id` VARCHAR(20) NOT NULL,   `name` VARCHAR(50) DEFAULT NULL,   `name2` CHAR( ...

  6. 在把数据库文件放在raw中,在应用程序中如何打开

    1.DbManager代码 package com.zyh.zyhimportdatabase; import java.io.File; import java.io.FileOutputStrea ...

  7. STSR round#1

    乱搞玩出新高度.....#1

  8. 【cocos2d-x】3.0使用cocos-console创建,编,部署游戏

    原文地址:http://fengchenluoyu.duapp.com/272.html cocos2d-x 3.0開始添加了一个cocos-console组件,它位于cocos2d-x 3.0的to ...

  9. 【iOS发展-53】实例探究:scrollView使用方法和解决方案无法滚动核心

    案例效果: (1)基本的就是练习scrollView的使用方法.界面里面的其它元素基本都是UIView和UIButton堆砌起来的. (2)主要用代码实现.当然,能够先用storyboard拖个scr ...

  10. MVC:Controller向View传值方式总结

    Controller向View传值方式总结 总结发现ASP.NET MVC中Controller向View传值的方式共有6种,分别是: ViewBag ViewData TempData 向普通Vie ...