CvScalar类型 :

它包括四个整型成员,当内存不是问题的时候,CvScalar经常用来代替1,2或者3个实数成员(这种情况下,不需要的分量被忽略掉),CvScalar有一个单独的成员val,val是一个指针,它指向一个4个双精度浮点数数组。

CvScalar就是一个可以用来存放4个double数值的数组,一般用来存放像素值(不一定是灰度值哦)最多可以存放四个通道。

typedef struct CvScalar{double val[4];}CvScalar;

cvScalar是一个特殊的例子:它包含三个构造函数,分别是:

1—cvScalar()————它需要1至四个参数,并将这些参数传递给val[ ]中相应的元素;

CvScalar  c  vScalar( double val0, double val1 CV_DEFAULT(0),double val2 CV_DEFAULT(0), double val3 CV_DEFAULT(0))
{CvScalar scalar;scalar.val[0] = val0; scalar.val[1] = val1;scalar.val[2] = val2; scalar.val[3] = val3;return scalar;
}

2—cvRealScalar()————该函数需要一个参数,传递个val[0],而val数组的其他元素被幅值为0;

CvScalar  cvRealScalar( double val0 ){CvScalar scalar;scalar.val[0] = val0;    //给第一个元素幅值scalar.val[1] = scalar.val[2] = scalar.val[3] = 0; //其他元素的值都等于0return scalar;}

3—cvScalarAll()————该函数需要一个参数,并且val[ ]数组中的其他元素都会被设置为这个值。

 CvScalar  cvScalarAll( double val0123 )  //只需要一个参数{CvScalar scalar;scalar.val[0] = val0123;              //所有的元素都被赋值为这个元素scalar.val[1] = val0123;scalar.val[2] = val0123;scalar.val[3] = val0123;return scalar;}
4——最后——关于CvScalar的一个简单实例程序:
#include <opencv2/opencv.hpp>
#include <stdio.h>
#include <opencv2/highgui/highgui.hpp>
#include <stdlib.h>void CreateEchelonIdentity(CvArr *Array,CvScalar Color)   //画梯形图
{cvSetIdentity(Array,Color);
}
int main()
{IplImage *Image1; CvSize Size1=cvSize(320,240);CvSize2D32f Size2 =cvSize2D32f(640.0,480.0);CvScalar Scalar1=cvScalar(0,1,2,3);CvScalar Scalar2=cvRealScalar(10);CvScalar Scalar3=cvScalarAll(20);CvScalar Scalar4=CV_RGB(255,255,3);Image1=cvCreateImage(Size1,IPL_DEPTH_8U,3); CreateEchelonIdentity(Image1,Scalar4);cvNamedWindow("Echelon Identity",1);            //创建一个窗口cvShowImage("Echelon Identity",Image1);                     //显示图像printf("The Size1 height is : %d\n",Size1.height);printf("The Size1 width is : %d\n\n",Size1.width);printf("The Size2 height is : %.1f\n",Size2.height);printf("The Size2 width is : %.1f\n\n",Size2.width);printf("The Scalar1 is: (%.1f,%.1f,%.1f,%.1f)\n",Scalar1.val[0],Scalar1.val[1],Scalar1.val[2],Scalar1.val[3]);printf("The Scalar2 is: (%.1f,%.1f,%.1f,%.1f)\n",Scalar2.val[0],Scalar2.val[1],Scalar2.val[2],Scalar2.val[3]);printf("The Scalar3 is: (%.1f,%.1f,%.1f,%.1f)\n\n",Scalar3.val[0],Scalar3.val[1],Scalar3.val[2],Scalar3.val[3]);printf("The Scalar4 is: (%.1f,%.1f,%.1f,%.1f)\n",Scalar4.val[0],Scalar4.val[1],Scalar4.val[2],Scalar4.val[3]);cvWaitKey(0);return 0;}
显示结果如下:

综上:上面的例子体现出了CvScalar的不同构造函数的使用

cvScalar()为初始化数据结构,cvScalar可以输入四个参数为double型的数据,把它的值放在double类型的数组val中。

cvRealScalar()则是只有一个参数值,cvRealScalar()函数只会让val[0]有初始值,其他四个元素的值相同且都等于0;

cvScalarAll()函数是只有一个参数值,但是它的四个元素都是该参数值。

详解CvScalar类型相关推荐

  1. python时间函数详解_Python:Numpy库基础分析——详解datetime类型的处理

    原标题:Python:Numpy库基础分析--详解datetime类型的处理 Python:Numpy库基础分析--详解datetime类型的处理 关于时间的处理,Python中自带的处理时间的模块就 ...

  2. 【Redis之ZSet类型的详解ZSet类型中常用命令的实践】

    Redis之ZSet类型的详解&ZSet类型中常用命令的实践 知识回顾: 通过对Redis中的String的命令做了充分的讲解以及实践学习 通过对Redis中String类型之Bit命令的详解 ...

  3. rust机枪塔攻击模式_《辐射4》机枪塔类型及使用心得图文详解 全类型机枪塔伤害介绍...

    今天小编给大家分享的是玩家"影与静"总结的<辐射4>机枪塔类型及使用心得图文详解 全类型机枪塔伤害介绍,一起来看下吧. 查过相关攻略,内容也就是在庇护山庄和星光做的攻速 ...

  4. MP4文件格式详解——文件类型ftyp

    原谅地址:http://blog.csdn.net/pirateleo/article/details/7583321 文件类型ftyp(ISO-14496-12) Author:Pirate Leo ...

  5. MP4文件格式详解——文件类型ftyp(转)

    文件类型ftyp(ISO-14496-12) Author:Pirate Leo Email:codeevoship@gmail.com ISO 14496 - 12 定义了一种封装媒体数据的基础文件 ...

  6. 多媒体 MP4文件格式详解——文件类型ftyp

    ISO 14496 - 12 定义了一种封装媒体数据的基础文件格式,mp4.3gp.ismv等我们常见媒体封装格式都是以这种基础文件格式为基础衍生的. 如果从全局角度了解基础文件格式,请看我之前的博文 ...

  7. 弹性地基梁计算程序 注册机_详解抗滑桩类型、设计及计算方法

    一.概述 抗滑桩是将桩插入滑面以下的稳固地层内,利用稳定地层岩土的锚固作用以平衡滑坡推力,从而稳定滑坡的一种结构物.除边坡加固及滑坡治理工程外,抗滑桩还可用于桥台.隧道等加固工程. 抗滑桩具有以下优点 ...

  8. Spring-注入参数详解-[集合类型属性]

    概述 常用集合 Set 实例 List 实例 Map 实例 Properties 实例 强类型集合 实例 集合合并 实例 概述 java.util包中的集合类型是最常用的结构数据类型,主要包括List ...

  9. spring配置详解-复杂类型注入

    复杂类型注入,刚才都是属性,这个叫注入方式,下面再来一个复杂类型注入,来看一下复杂类型注入行为,复杂类型注入呢,指的是,咱们刚才的注入类型,无非就是值或者对象,假设遇到数组,List,Map,Prop ...

最新文章

  1. @RequestMapping执行过程
  2. oracle遇null赋默认值,使用hibernate annotation 为非空列加上默认值
  3. PaddlePaddle训练营——公开课——AI核心技术掌握——第1章迈入现代人工智能的大门——多层感知机网络模型
  4. 使用springaop技术面向切面编程
  5. Delphi XE7中新并行库
  6. NSString的比较专栏
  7. C++字符串处理小结
  8. admin ajax,如何在FastAdmin中使用Ajax发送请求?
  9. 厄拉多塞筛法求素数 c语言,求质数(Prime Number 素数)的方法——厄拉多塞筛法...
  10. ms03-026漏洞原理与复现
  11. 赵小楼《天道》《遥远的救世主》深度解析(36)丁元英为什么参加芮小丹组的那场文化人的饭局?
  12. (Linux目录操作命令)零基础小白学习_入门到精通03 程序员阿沐
  13. 【电力电子技术】整流电路
  14. 手机软件测试规范(含具体用例)
  15. 黑马程序员——集合框架
  16. 基于alios系统门禁uart串口应用编写
  17. TFN F7 M1 光时域反射仪 多模OTDR 光纤测试仪 高精度 触摸屏 波长850/1300nm
  18. == 与 === 的区别
  19. FreeBSD 13.0-RELEASE 安装记录
  20. 2天赚了4个W,手把手教你用Threejs搭建一个Web3D汽车展厅 | 大帅老猿threejs特训

热门文章

  1. 网页中竖的目录怎么改成横的_一点基础也没有,想快速练漂亮硬笔字,先练什么?怎么练进步明显?...
  2. java下载网络文件_java下载网络文件的方法有哪些
  3. ib_logfile和mysql_bin_mysql的innodb中事务日志ib_logfile
  4. 1小时搞懂设计模式之工厂模式(方法工厂)
  5. Oracle(一)创建表空间 用户以及用户授权
  6. 部署 Job (第二部分)
  7. Linux中安装tomcat
  8. 自定义控件三部曲之动画篇(一)——alpha、scale、translate、rotate、set的xml属性及用法
  9. delphi中griddata控件写入float数值_年中巨献!明道云发布多项重磅功能
  10. 基于JAVA+SpringMVC+Mybatis+MYSQL的智能养生平台系统