矩阵和图像的操作

(1)cvAnd函数

其结构

void cvAnd(  //将src1和src2按像素点取“位与运算”
const CvArr* src1,//第一个矩阵
const CvArr* src2,//第二个矩阵
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("3.jpg");
src3=cvLoadImage("4.jpg"); cvAnd(src1,src2,src3);
cvShowImage( "測试1", src1);
cvShowImage( "測试2", src2);
cvShowImage( "測试3", src3);
cvWaitKey();
return 0;
}

输出结果

(2)cvAndS函数
其结构
void cvAndS(//使src1与value进行 位与运算
const CvArr* src1,//第一个矩阵
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,*src3;
src1=cvLoadImage("1.jpg");
src2=cvLoadImage("5.jpg"); CvScalar cs;
cs.val[1] = 100.0;
cs.val[2] = 100.0;
cs.val[0] = 100.0;
cs.val[3] = 100.0;
cvAndS(src1,cs,src1);
cvShowImage( "測试1", src1);
cvShowImage( "測试2", src2); cvWaitKey();
return 0;
}

输出结果

(3)cvAvg函数
其结构
CvScalar cvAvg(//求出src的平均像素值
const CvArr* src,//目标矩阵
const CvArr* mark = NULL//像素开关
);

实例代码:我对上面那个机器猫的图像使用

#include <cv.h>
#include <highgui.h>
#include <iostream>
#include <stdio.h>
using namespace std; int main(int argc, char** argv)
{
IplImage *src1;
src1=cvLoadImage("1.jpg"); CvScalar cs; cs = cvAvg(src1); cout<<cs.val[0] << endl;
cout<<cs.val[1] << endl;
cout<<cs.val[2] << endl;
cout<<cs.val[3] << endl; getchar();
return 0;
}

输出结果

(4)cvAvgSdv函数
其结构
CvScalar cvAvg(//求像素平均值和标准差
const CvArr* arr,//目标矩阵
CvScalar* mean,//平均值
CvScalar* std_dev,//标准差
const CvArr* mark = NULL//像素开关
);

程序实例:依旧用的机器猫图片

#include <cv.h>
#include <highgui.h>
#include <iostream>
#include <stdio.h>
using namespace std; int main(int argc, char** argv)
{
IplImage *src1;
src1=cvLoadImage("1.jpg"); CvScalar cs,cs1; cvAvgSdv(src1,&cs,&cs1); cout<<"平均值:"<<endl;
cout<<cs.val[0] << endl;
cout<<cs.val[1] << endl;
cout<<cs.val[2] << endl;
cout<<cs.val[3] << endl;
cout <<endl;
cout <<"标准差"<<endl;
cout<<cs1.val[0] << endl;
cout<<cs1.val[1] << endl;
cout<<cs1.val[2] << endl;
cout<<cs1.val[3] << endl; getchar();
return 0;
}

输出结果

to be continued

《学习opencv》笔记——矩阵和图像操作——cvAnd、cvAndS、cvAvg and cvAvgSdv的更多相关文章

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

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

  2. 《学习opencv》笔记——矩阵和图像操作——cvSetIdentity,cvSolve,cvSplit,cvSub,cvSubS and cvSubRS

    矩阵和图像的操作 (1)cvSetIdentity函数 其结构 void cvSetIdentity(//将矩阵行与列相等的元素置为1.其余元素置为0 CvArr* arr//目标矩阵 ); 实例代码 ...

  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. Innodb引擎下mysql自身配置优化

    1.简单介绍InnoDB给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎.InnoDB锁定在行级并且也在SELECT语句提供一个Oracle风格一致的非锁定读.这些特色 ...

  2. LeetCode(27): 移除元素

    Easy! 题目描述: 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1 ...

  3. TStringList 复制 赋值。

    方法1:list2.addstrings(list1) 特点是:不会清空list2中原有的数据. 方法2:list2.assign(list1) 特点是:会清空list2中原有的数据(直接替换链表节点 ...

  4. Visual Studio强大的帮助工具--Resharper安装与使用

    ReSharper是一个JetBrains公司出品的代码生成工具,其能帮助Microsoft Visual Studio成为一个更佳的IDE.使用ReSharper,你可以进行深度代码分析,智能代码协 ...

  5. poj 3903 poj 2533 (LIS模板题)

    pi1 < pi2 < ... < pik, with i1 < i2 < ... < ik. Sample Input 6 5 2 1 4 5 3 3 1 1 1 ...

  6. js随机生成颜色的方法

    function getRandomColor() { return '#' + (Math.random() * 0xffffff << 0).toString(16); }

  7. 【Java】 剑指offer(20) 表示数值的字符串

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如, ...

  8. 005 Spark快速入门的简单程序案例

    参考:官网的quick start http://spark.apache.org/docs/1.6.0/quick-start.html 这里只是在shell命令行中简单的书写一些命令,做一个简单的 ...

  9. 微信小程序 --- 表单输入验证(手机号、邮箱验证、输入非空)

    js代码 Page({                   /**    * 页面的初始数据    */         data: {         indicatorDots: false,   ...

  10. web扫描工具-Nikto介绍与使用

    Nikto Perl语言开发的开源Web安全扫描器 web扫描模式:截断代理主动扫描 可以扫描的方面:软件版本搜索存在安全隐患的文件服务器配置漏洞WEB Application层面的安全隐患避免404 ...