《得知opencv》注意事项——矩阵和图像处理——cvOr,cvOrS,cvrReduce,cvRepeat,cvScale,cvSet and cvSetZero
矩阵和图像的操作
(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的更多相关文章
- 《得知opencv》注意事项——矩阵和图像处理——cvAdd、cvAddS and cvAddWeighted
矩阵和图像操作 (1)cvAdd函数 其结构 void cvAdd(//图像加和 const CvArr* src1,//第一个原矩阵 const CvArr* src2,//第二个原矩阵 CvArr ...
- 《学习opencv》笔记——矩阵和图像处理——cvMinManLoc,cvMul,cvNot,cvNorm and cvNormalize
矩阵和图像的操作 (1)cvMinManLoc函数 其结构 void cvMinMaxLoc(//取出矩阵中最大最小值 const CvArr* arr,//目标矩阵 double* min_val, ...
- 《学习opencv》笔记——矩阵和图像处理——cvGEMM,cvGetCol,cvGetCols and cvGetDiag
矩阵和图像操作 (1)cvGEMM函数 其结构 double cvGEMM(//矩阵的广义乘法运算 const CvArr* src1,//乘数矩阵 const CvArr* src2,//乘数矩阵 ...
- 《学习opencv》笔记——矩阵和图像处理——cvMax,cvMaxS,cvMerge,cvMin and cvMinS
矩阵和图像操作 (1)cvMax函数 其结构 void cvMax(//比較两个图像取最大值 const CvArr* src1,//图像1 const CvArr* src2,//图像2 CvArr ...
- 《学习opencv》笔记——矩阵和图像处理——cvAnd、cvAndS、cvAvg and cvAvgSdv
矩阵和图像的操作 (1)cvAnd函数 其结构 void cvAnd( //将src1和src2按像素点取"位与运算" const CvArr* src1,//第一个矩阵 cons ...
- OpenCV快速遍历矩阵元素方法
OpenCV中Mat矩阵data数据的存储方式和二维数组不一致,二维数组按照行优先的顺序依次存储,而Mat中还有一个标示行步进的变量Step.使用Mat.ptr<DataTyte>(row ...
- Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘.dot.mul运算详解 2016年09月02日 00:00:36 -牧野- 阅读数:59593 标签: Opencv矩阵相乘点乘dotmul 更多 个人分类: O ...
- Python 图像处理 OpenCV (10):图像处理形态学之顶帽运算与黑帽运算
前文传送门: 「Python 图像处理 OpenCV (1):入门」 「Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像」 「Python ...
- OpenCV中的矩阵操作
函数 Description 说明 cvAdd Elementwise addition of two arrays 两个数组对应元素的和 cvAddS Elementwise addition of ...
随机推荐
- Xamarin.Android 入门实例(4)之实现对 SQLLite 进行添加/修改/删除/查询操作
1.Main.axml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns: ...
- 删CentOS / RHEL库和配置文件(Repositories and configuraiton files)
1 删除库简介 随着root权限执行以下的命令: # cd /etc/yum.repos.d/ 列出全部库(repo) #ls CentOS-Base.repo epel.repo mirrors-r ...
- C++ 习题 输出日期时间--友元函数
Description 设计一个日期类和时间类,编写display函数用于显示日期和时间.要求:display函数作为类外的普通函数,分别在Time和Date类中将display声明为友元函数.在主函 ...
- 【iOS】文件上传小记
iOS由该系统提供API可以实现可以实现文件的上传和下载,有两种方法来. NSURLConnection与NSURLSession. 当中NSURLConnection是使用非常久的的一种方式.NSU ...
- java提高篇(八)-----实现多重继承
多重继承指的是一个类可以同时从多于一个的父类那里继承行为和特征,然而我们知道Java为了保证数据安全,它只允许单继承.有些时候我们会认为如果系统中需要使用多重继承往往都是糟糕的设计,这个时候我们往往需 ...
- configure.ac:20: error: Autoconf version 2.65 or higher is required
安装thrift例如,下面的问题出现: configure.ac:20: error: Autoconf version 2.65 or higher is required wget http:// ...
- android cocos2dx游戏-加入截图和分享微博功能
本文介绍怎样在游戏中添加分享功能,截屏后分享到微博及其他社交网络的功能. public class ShareSupport { // when you want to use share(),fir ...
- SQL SERVER2005事务日志已满 解决方法
DUMP TRANSACTION 数据库名称 WITH NO_LOG alter database 数据库名称 set recovery simple 3.右键你要压缩的数据库--所有任务--收缩数据 ...
- C# HttpClient Cookie验证解决方法
自实现的cookie 验证,远程取值的例子 以下代码配合HttpClient使用可以实现跨域(cookie的读写) //验证 复制代码 代码如下: HttpClient httpClient = ne ...
- 2015最新iherb海淘攻略-图文入门教程
IHerb是美国最热门的海淘海购网站之中的一个,适合不爱担心,怕麻烦的朋友入门海淘,由于它有中文页面,可直邮中国,上千个母婴用品.化妆品.保健品品牌,最重要的是!首次下单,价值$40及以上的订单会马上 ...