矩阵和图像的操作


(1)cvOr函数

其结构

void cvOr(//两个矩阵相应元素做或执行
const CvArr* src1,//矩阵1
const CvArr* src2,//矩阵2
CvArr* dst,//结果矩阵
const CvArr* mask = NULL//矩阵“开关”
);

实例代码

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

输出结果

(2)cvOrS函数

其结构

void cvOr(//矩阵与给定标量做或运算
const CvArr* src1,//矩阵1
CvScalar value,//给定变量
CvArr* dst,//结果矩阵
const CvArr* mask = NULL//矩阵“开关”
);

实例代码

#include <cv.h>
#include <highgui.h>
#include <stdio.h> int main(int argc, char** argv)
{
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; cvOrS(src1,cs,src2); cvShowImage( "測试1", src1);
cvShowImage( "測试2", src2);
cvWaitKey();
return 0;
}

输出结果

(3)cvReduce函数

其结构

CvSize CvReduce(//完毕由op指定的约简
const CvArr* src,//目标矩阵
CvArr* dst,//结果矩阵
int dim = -1,//因子系数,//1合并成行,0合并成列。-1转化成相应的dis
int op = CV_REDUCE_SUM//指定约简法则
);

ps:当中的op代表的转换操作

op的值 结果
CV_REDUCE_SUM 计算全部向量的总和
CV_REDUCE_AVG 计算全部向量的平均值
CV_REDUCE_MAX 计算全部向量中的最大值
CV_REDUCE_MIN 计算全部向量中的最小值

实例代码

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

输出结果

(4)cvRepeat函数

其结构

void cvRepeat(//复制图像
const CvArr* src,//目标矩阵
CvArr* dst//结果矩阵
);

实例代码

#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <iostream>
using namespace std; int main()
{
IplImage *src1, *src2,*src3;
src1 = cvLoadImage("1.jpg");
src2 = cvLoadImage("7.jpg"); cvRepeat(src1,src2); cvShowImage( "測试1", src1);
cvShowImage( "測试2", src2);
cvWaitKey();
return 0;
}

输出结果

(5)cvScale函数

其结构

void cvScale(//进行线性变换转换
const CvArr* src,//输入矩阵
CvArr* dst,//输出矩阵
double scale,//比例因子
double shift = 0.0//放缩比例
);

实例代码

#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <iostream>
using namespace std; int main()
{
IplImage* src1 = cvLoadImage("1.jpg",CV_LOAD_IMAGE_GRAYSCALE); IplImage* src2 = cvCloneImage(src1); IplImage* dst = cvCreateImage(cvGetSize(src1),IPL_DEPTH_64F,src1->nChannels); double max_Val,min_Val;
cvScale(src1,dst,1.0,0.0);
cvAdd(dst,dst,dst); cvMinMaxLoc(dst, &min_Val, &max_Val, NULL, NULL, NULL); cvScale(dst,src2,1.0,0.0); cvScale(dst, dst, 1.0/(max_Val-min_Val), 1.0*(-min_Val)/(max_Val-min_Val)); cvMinMaxLoc(dst, &min_Val, &max_Val, NULL, NULL, NULL); cvShowImage("測试1",src1); cvShowImage("測试2",src2); cvShowImage("结果",dst); cvWaitKey(-1);
return 0;
}

输出结果

(6)cvSet函数

其结构

void cvSet(//对图像中的像素设置value
CvArr* arr,//目标矩阵
CvScalar value,//设置值
const,CvArr* mask = NULL//图像开关
);

实例代码

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

输出结果

(7)cvSetZero函数

其结构

void cvSetZero(//对图像自己主动设置为零,相当于cvSet(0.0)
CvArr* arr,//目标矩阵
);

实例代码

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

输出结果

to be continued

版权声明:本文博主原创文章,博客,未经同意不得转载。

《得知opencv》注意事项——矩阵和图像处理——cvOr,cvOrS,cvrReduce,cvRepeat,cvScale,cvSet and cvSetZero的更多相关文章

  1. 《得知opencv》注意事项——矩阵和图像处理——cvAdd、cvAddS and cvAddWeighted

    矩阵和图像操作 (1)cvAdd函数 其结构 void cvAdd(//图像加和 const CvArr* src1,//第一个原矩阵 const CvArr* src2,//第二个原矩阵 CvArr ...

  2. 《学习opencv》笔记——矩阵和图像处理——cvMinManLoc,cvMul,cvNot,cvNorm and cvNormalize

    矩阵和图像的操作 (1)cvMinManLoc函数 其结构 void cvMinMaxLoc(//取出矩阵中最大最小值 const CvArr* arr,//目标矩阵 double* min_val, ...

  3. 《学习opencv》笔记——矩阵和图像处理——cvGEMM,cvGetCol,cvGetCols and cvGetDiag

    矩阵和图像操作 (1)cvGEMM函数 其结构 double cvGEMM(//矩阵的广义乘法运算 const CvArr* src1,//乘数矩阵 const CvArr* src2,//乘数矩阵 ...

  4. 《学习opencv》笔记——矩阵和图像处理——cvMax,cvMaxS,cvMerge,cvMin and cvMinS

    矩阵和图像操作 (1)cvMax函数 其结构 void cvMax(//比較两个图像取最大值 const CvArr* src1,//图像1 const CvArr* src2,//图像2 CvArr ...

  5. 《学习opencv》笔记——矩阵和图像处理——cvAnd、cvAndS、cvAvg and cvAvgSdv

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

  6. OpenCV快速遍历矩阵元素方法

    OpenCV中Mat矩阵data数据的存储方式和二维数组不一致,二维数组按照行优先的顺序依次存储,而Mat中还有一个标示行步进的变量Step.使用Mat.ptr<DataTyte>(row ...

  7. Opencv中Mat矩阵相乘——点乘、dot、mul运算详解

    Opencv中Mat矩阵相乘——点乘.dot.mul运算详解 2016年09月02日 00:00:36 -牧野- 阅读数:59593 标签: Opencv矩阵相乘点乘dotmul 更多 个人分类: O ...

  8. Python 图像处理 OpenCV (10):图像处理形态学之顶帽运算与黑帽运算

    前文传送门: 「Python 图像处理 OpenCV (1):入门」 「Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像」 「Python ...

  9. OpenCV中的矩阵操作

    函数 Description 说明 cvAdd Elementwise addition of two arrays 两个数组对应元素的和 cvAddS Elementwise addition of ...

随机推荐

  1. WebService什么?

    一.前言 我们或多或少都听过WebService(Web服务),有一段时间非常多计算机期刊.书籍和站点都大肆的提及和宣传WebService技术.当中不乏非常多吹嘘和做广告的成分.可是不得不承认的是W ...

  2. leetcode第一刷_Merge Sorted Array

    水题,只是思想还是实用的. 当然能够新建出一个数组.比較着拷贝过去.可是没有必要啊亲.想想为什么用源数组会麻烦,由于确定了前面的数.为了后面的数字不被覆盖,要依次往后移,转念一想,先确定后面的数字.就 ...

  3. js防堵塞载入

    js防堵塞载入 <script type="text/javascript"> function scriptDomElement (u) { var s = docu ...

  4. FTP上传文件时 System.Net.WebException: 基础连接已经关闭: 接收时发生错误。

    在c#中使用HttpWebRequest时,频繁请求一个网址时,过段时间就会出现“基础连接已经关闭: 接收时发生意外错误”的错误提示.将webRequest的属性设置成下面的,经测试可以解决.Syst ...

  5. RH033读书笔记(12)-Lab 13 Finding and Processing Files

    Sequence 1: Using find Scenario: Log in as user student. Devise and execute a find command that prod ...

  6. hadoop出现namenode running as process 18472. Stop it first.

    hadoop出现namenode running as process 18472. Stop it first.等等,类别似几个的出现. namenode running as process 32 ...

  7. CodeForces 396C 树状数组 + DFS

    本主题开始看到以为段树或树状数组,但是,对于一个节点的有疑问的所有子节点的加权,这一条件被视为树的根,像 然后1号是肯定在第一层中,然后建立一个单向侧倒查,然后记录下来 其中每个节点 层,终于 两个节 ...

  8. Android 无法Bind Service

    今天帮同学看一个bindService的样例,说是无法bind service(他接触android时间不长),那代码是从网上找的一个样例,结果看了半天,才终于找到问题所在了),这个问题真是令人挺无语 ...

  9. slf自己主动绑定实现类过程推断

    依照绑定实现类的方式是基于约定原则:推断分下面几个步骤 1.LoggerFactory扫描实现类路径有几个实现类,即在org/slf4j/impl/下有几个StaticLoggerBinder.cla ...

  10. NOI第一天感想&小结

    嘛...中午总算是到了深圳了--在虹桥机场和飞机上和市队大神们一起讨论各种各样奇(sang)葩(bing)的算(ren)法(lei)还是非常开心的,在此再各种膜拜一下尽管没来比赛的FFT大神@陈中瑞 ...