首先单词scalar的意思是标量,但是我们经常可以看到Scalar是包含多个值的,很像是一个向量,这是怎么回事呢?很是让人感觉困惑。先收起我们的困惑,首先来看看,Scalar的定义:

[cpp] view plain copy
  1. typedef struct Scalar
  2. {
  3. double val[4];
  4. }Scalar;

可以看到,Scalar是一个由长度为4的数组作为元素构成的结构体,Scalar最多可以存储四个值,没有提供的值默认是0。

使用:

Scalar常用的使用场景如下:

[cpp] view plain copy
  1. Mat M(7,7,CV_32FC2,Scalar(1,3));

上面的代码表示:创建一个2通道,且每个通道的值都为(1,3),深度为32,7行7列的图像矩阵。CV_32F表示每个元素的值的类型为32位浮点数,C2表示通道数为2,Scalar(1,3)表示对矩阵每个元素都赋值为(1,3),第一个通道中的值都是1,第二个通道中的值都是3.

实例1:

[cpp] view plain copy
  1. #include <iostream>
  2. #include <opencv2/highgui/highgui.hpp>
  3. #include <opencv2/core/core.hpp>
  4. #include <opencv2/imgproc/imgproc.hpp>
  5. #include <stdio.h>
  6. using namespace std;
  7. using namespace cv;
  8. void scalar_demo1(){
  9. Mat M(4,4,CV_32FC2,Scalar(1,3));
  10. cout<<M<<endl;
  11. }
  12. void scalar_demo2(){
  13. Mat M(4,4,CV_32FC3,Scalar(1,2,3));
  14. cout<<M<<endl;
  15. }
  16. void scalar_demo3(){
  17. Mat M(4,4,CV_32FC4,Scalar(1,2,3));
  18. cout<<M<<endl;
  19. }
  20. int main(void)
  21. {
  22. //resize_img();
  23. //convert_color_space();
  24. scalar_demo1();
  25. cout<<"**********************************"<<endl;
  26. scalar_demo2();
  27. cout<<"**********************************"<<endl;
  28. scalar_demo3();
  29. return 0;
  30. }

运行以上代码输出如下,可以发现最后一个矩阵是4通道的,但是我们在初始化的时候只给出了三个通道的值,所以第四个通道的值都默认为0。

实例2:

[cpp] view plain copy
  1. #include <iostream>
  2. #include <opencv2/highgui/highgui.hpp>
  3. #include <opencv2/core/core.hpp>
  4. #include <opencv2/imgproc/imgproc.hpp>
  5. #include <stdio.h>
  6. using namespace std;
  7. using namespace cv;
  8. void scalar_demo4(){
  9. Mat blue_m(256,256,CV_8UC3,Scalar(255,0,0));
  10. Mat green_m(256,256,CV_8UC3,Scalar(0,255,0));
  11. Mat red_m(256,256,CV_8UC3,Scalar(0,0,255));
  12. imshow("Blue",blue_m);
  13. waitKey(0);
  14. imshow("Green",green_m);
  15. waitKey(0);
  16. imshow("Red",red_m);
  17. waitKey(0);
  18. }
  19. int main(void)
  20. {
  21. scalar_demo4();
  22. return 0;
  23. }

Scalar数据类型相关推荐

  1. OpenCV学习之Scalar数据类型

    名词解释 首先看Scalar的英文释义: scalar的意思是标量,标量是什么意思呢?亦称"无向量".有些物理量,只具有数值大小,而没有方向,部分有正负之分.物理学中,标量(或作纯 ...

  2. OpenCV:Scalar数据类型理解

    文章目录 Scalar 定义: 使用: 案例1:通道的建立与打印 案例2:打印相同通道数矩阵图像 Scalar 定义: 首先单词scalar的意思是标量,但是我们经常可以看到Scalar是包含多个值的 ...

  3. OpenCV学习笔记(3)——Scalar数据类型理解

    https://blog.csdn.net/liuweiyuxiang/article/details/76929534

  4. oracle 赋值表数据类型,PL/SQL数据类型及操作符

    标量(scalar)数据类型 标量(scalar)数据类型没有内部组件,他们大致可分为以下四类: . number . character . date/time . boolean 表1显示了数字数 ...

  5. ORACLE数据库数据类型

    Oracle的数据类型 Oracle的数据类型分为标量(Scalar)类型.复合(Composite)类型.引用(Reference)类型和LOB(Large Object)类型4种类型. 因为标量类 ...

  6. 修改服务器返回数据类型,服务器返回数据类型

    服务器返回数据类型 内容精选 换一换 根据给定的裸金属服务器ID列表,批量重启裸金属服务器.一次最多可以重启1000台.重启裸金属服务器属于异步API,接口调用成功只表示请求下发成功,任务执行结果请通 ...

  7. PL/SQL七复合数据结构

    PL/SQL有两种复合数据结构:记录和集合.记录由不同的域组成,集合由不同的元素组成. 记录: 记录是PL/SQL的一种复合数据结构,scalar数据类型和其他数据类型只是简单的在包一级进行预定义,但 ...

  8. 在Oracle中不通过存储过程一次执行多条SQL语句Oracle PL/SQL

    PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL ...

  9. opencv学习笔记之像素处理

    文章目录 前言 一.多通道的分离合并 多通道分离函数split() 多通道合并函数merge() 二.图像像素统计 计算图像的平均值和标准差 前言 记录opencv有关像素操作的一些函数和功能 一.多 ...

最新文章

  1. 动态规划(DP)通俗讲解
  2. 领域驱动设计:软件核心复杂性应对之道
  3. 菜鸟成长日记(四)之WMIC简单命令应用
  4. 第一章 DevOps概述
  5. JAVA字符串数学公式运算-辅助类-支持浮点数错误纠正-低消耗-高可用性-小数点后面保留16位小数
  6. java执行linux命令
  7. Cloud Foundry Java客户端–流事件
  8. 链表选择排序算法功能实现演示
  9. 一个简单的crontab
  10. 关于微信服务商统一下单需要注意的几个问题
  11. 201521123115 《Java程序设计》第3周学习总结
  12. 史上最失败系统!微软正式终止对Vista支持
  13. Solidity入门学习
  14. 云计算机教室 国家标准,计算机云网络教室建设方案
  15. python将图片合并到PDF
  16. 《大学》修身、齐家、治国、平天下
  17. 用TELNET登录QQ邮箱
  18. c#安卓连接sqlserver_C#手把手教你玩微信自动化
  19. 【计算机图形学 】扫描线多边形填充算法 | OpenGL+鼠标交互
  20. yum报错网络不可达,但是配置的网络能够ping通

热门文章

  1. kubernetes二进制安装
  2. 简单移位密码——凯撒加密、解密算法
  3. 一种基于接触性检查的全方位空中操作平台
  4. 关于COVID-19新型冠状病毒,最新提出的人工智能在诊疗中的应用
  5. rtx服务器设置 文件,rtx 服务器 文件传输 配置
  6. anaconda损坏的卸载方式
  7. CTime和COleDateTime区别 比较
  8. 怎么把.txt转换成html,怎么把txt转换成HTML
  9. 产品经理基本功,如何画一个满分原型?
  10. ArrayList的add方法详解——让我们好好看看一个元素是如何插入到ArrayList集合当中(源码级别)