template<typename _Tp> class Scalar_ : public Vec<_Tp, 4>
{
public:
    //! various constructors
    Scalar_();
    Scalar_(_Tp v0, _Tp v1, _Tp v2=0, _Tp v3=0);
    Scalar_(_Tp v0);

    template<typename _Tp2, int cn>
    Scalar_(const Vec<_Tp2, cn>& v);

    //! returns a scalar with all elements set to v0
    static Scalar_<_Tp> all(_Tp v0);

    //! conversion to another data type
    template<typename T2> operator Scalar_<T2>() const;

    //! per-element product
    Scalar_<_Tp> mul(const Scalar_<_Tp>& a, double scale=1 ) const;

    // returns (v0, -v1, -v2, -v3)
    Scalar_<_Tp> conj() const;

    // returns true iff v1 == v2 == v3 == 0
    bool isReal() const;
};

typedef Scalar_<double> Scalar;

可以看出Scalar是一个由长度为4的数组作为元素构成的类,Scalar最多可以存储四个值,没有提供的值默认是0,一般用来存放像素值。

#include<opencv2/core/core.hpp>
#include<iostream>

int main(){
    cv::Scalar scalar(125);
    cv::Mat mat(2,3,CV_8UC1,scalar);
    std::cout<<mat<<std::endl;
    std::cout<<std::endl;

    cv::Scalar scalar1(0,255);
    cv::Mat mat1(4,4,CV_32FC2,scalar1);
    std::cout<<mat1<<std::endl;
    std::cout<<std::endl;

    cv::Scalar scalar2(0,255,255);
    cv::Mat mat2(4,4,CV_32FC3,scalar2);
    std::cout<<mat2<<std::endl;
    std::cout<<std::endl;

    cv::Scalar scalar3(0,255,255,0);
    cv::Mat mat3(4,4,CV_32FC4,scalar3);
    std::cout<<mat3<<std::endl;
    return 0;

}
cv::Mat mat(2,3,CV_8UC1,scalar)表示创建单通道,且每个通道的值都为125,深度为8,2行3列的图像矩阵。
CV_8UC1表示每个元素的值的类型为8位无符号整形,C1表示通道数为1,scalar(125)表示对矩阵每个元素都赋值为125.
cv::Mat mat1(4,4,CV_32FC2,scalar1)表示创建两通道,且每个通道的值分别为(0,255),深度为32,4行4列的图像矩阵。
CV_32FC2表示每个元素的值的类型为32位浮点数,C2表示通道数为2,scalar1(0,255)第一个通道中的值都是0,第二个通道中的值都是255。
cv::Mat mat2(4,4,CV_32FC3,scalar2)表示创建三通道,且每个通道的值分别为(0,255,255),深度为32,4行4列的图像矩阵。
CV_32FC3表示每个元素的值的类型为32位浮点数,C3表示通道数为3,scalar2(0,255,255)第一个通道中的值都是0,第二个通道中的值都是255,第三个通道中的值都是255。
cv::Mat mat3(4,4,CV_32FC4,scalar3)表示创建四通道,且每个通道的值分别为(0,255,255,0),深度为32,4行4列的图像矩阵。
CV_32FC4表示每个元素的值的类型为32位浮点数,C4表示通道数为4,scalar2(0,255,255,0)第一个通道中的值都是0,第二个通道中的值都是255,第三个通道中的值都是255,第四个通道中的值都是0。

#include<opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include<iostream> int main(){ cv::Mat mat(,,CV_32FC3,cv::Scalar(,,));
imshow("Scalar(0,0,0)",mat); cv::Mat mat1(,,CV_32FC3,cv::Scalar(,,));
imshow("Scalar(0,0,255)",mat1); cv::Mat mat2(,,CV_32FC3,cv::Scalar(,,));
imshow("Scalar(0,255,0)",mat2); cv::Mat mat3(,,CV_32FC3,cv::Scalar(,,));
imshow("Scalar(255,0,0)",mat3); cv::Mat mat4(,,CV_32FC3,cv::Scalar(,,));
imshow("Scalar(0,255,255)",mat4); cv::Mat mat5(,,CV_32FC3,cv::Scalar(,,));
imshow("Scalar(255,0,255)",mat5); cv::Mat mat6(,,CV_32FC3,cv::Scalar(,,));
imshow("Scalar(255,255,0)",mat6); cv::Mat mat7(,,CV_32FC3,cv::Scalar(,,));
imshow("Scalar(255,255,255)",mat7); cv::Mat mat8(,,CV_32FC4,cv::Scalar(,,,));
imshow("Scalar(0,0,0,255)",mat8); cv::Mat mat9(,,CV_32FC4,cv::Scalar(,,,));
imshow("Scalar(0,0,255,255)",mat9); cv::Mat mat10(,,CV_32FC4,cv::Scalar(,,,));
imshow("Scalar(0,255,0,255)",mat10); cv::Mat mat11(,,CV_32FC4,cv::Scalar(,,,));
imshow("Scalar(255,0,0,255)",mat11); cv::Mat mat12(,,CV_32FC4,cv::Scalar(,,,));
imshow("Scalar(0,255,255,255)",mat12); cv::Mat mat13(,,CV_32FC4,cv::Scalar(,,,));
imshow("Scalar(255,0,255,255)",mat13); cv::Mat mat14(,,CV_32FC4,cv::Scalar(,,,));
imshow("Scalar(255,255,0,255)",mat14); cv::Mat mat15(,,CV_32FC4,cv::Scalar(,,,));
imshow("Scalar(255,255,255,255)",mat15); cv::waitKey();
return ; }

opencv Scalar的更多相关文章

  1. 图像颜色--opencv scalar

    Scalar定义可存放1—4个数值的数值,其结构体如下: typedef struct Scalar { double val[4]; }Scalar; 例如:Scalar s: 如果使用的图像是1通 ...

  2. 用cv::Scalar来设置opencv中图片的颜色

    1 怎样使用cv::Scalar来设置opencv中的颜色 cv::Scalar的构造函数是cv::Scalar(v1, v2, v3, v4),前面的三个参数是依次设置BGR的,和RGB相反,第四个 ...

  3. OpenCv中基本数据类型--Point,Size,Rect,Scalar,Vec3b类类型的详细解释

    头文件路径:opencv-2.4.9/modules/core/include/opencv2/core/core.hpp 一.Point类 在这些数据类型中,最简单的就是Point点类,Point类 ...

  4. OpenCV 中Scalar

    参考来源: 1.https://blog.csdn.net/Eroslol/article/details/52525541 2.https://www.cnblogs.com/hustdc/p/68 ...

  5. opencv关于Mat类中的Scalar()---颜色赋值

    这个 CvScalar就是一个可以用来存放4个double数值的数组(O'Reilly的书上写的是4个整型成员):一般用来存放像素值(不一定是灰度值哦)的,最多可以存放4个通道的. typedef s ...

  6. opencv学习笔记——Scalar数据结构的理解

    首先看一下Scalar的定义 typedef struct Scalar { ]; }Scalar; 可以看到,Scalar是一个由长度为4的数组作为元素构成的结构体,Scalar最多可以存储四个值, ...

  7. OpenCV——创建Mat对象、格式化输出、常用数据结构和函数(point,vector、Scalar、Size、Rect、cvtColor)

    创建Mat对象:

  8. opencv在图像显示中文

    在图像定位和模式识别时,经常需要把结果标注到图片上,标注内容可以是数字字母.矩形框等(opencv支持的)或者是中文汉字(借助freetype). 1.显示数字/矩形框 #include <op ...

  9. 基于OpenCV的车辆检测与追踪的实现

    最近老师布置了一个作业,是做一个基于视频的车辆检测与追踪,用了大概两周的时间做了一个简单的,效果不是很理想,但抑制不住想把自己的一些认识写下来,这里就把一些网络上的博客整理一下分享给大家,希望帮助到大 ...

随机推荐

  1. 处理异常方式try_catch_finally, throws,throw

    如何处理 Exception 的异常: 抓抛模型:1.抓:异常的处理,有两种方式①try-catch-finally   ②throws+异常类型 2.抛:一旦执行过程中出现异常,会抛出一个异常类的对 ...

  2. ElementUi 全选功能实现

    每次使用官方的示例都会被坑一下(可能是我的理解不够透彻吧,不记录一下保不准下次依旧会忘), 故此今天做个Demo 记录一下.本次仍然使用官网给出的示例,只做理解性的说明. 1.此处先给出官方示例代码: ...

  3. ClickHouse源码笔记1:聚合函数的实现

    由于工作的需求,后续笔者工作需要和开源的OLAP数据库ClickHouse打交道.ClickHouse是Yandex在2016年6月15日开源了一个分析型数据库,以强悍的单机处理能力被称道. 笔者在实 ...

  4. 使用RTL进行硬件模型编程的局限性

    https://mp.weixin.qq.com/s/Nj_d3hwgNX4kWVtKsqMSWg   ​​   硬件模型编程,即Hardware Model Programming.在RTL抽象级别 ...

  5. Myeclipse新建工作空间配置

    之前跟着尚硅谷JavaWeb视频学习,现在总结一下Myeclipse新建工作空间配置 Windows按钮下的Preferences 1. General -->   Workspace --&g ...

  6. Java实现 蓝桥杯VIP 算法训练 薪水计算

    算法训练 薪水计算 时间限制:1.0s 内存限制:512.0MB 提交此题 问题描述 编写一个程序,计算员工的周薪.薪水的计算是以小时为单位,如果在一周的时间内,员工工作的时间不超过40 个小时,那么 ...

  7. Java实现 神犇的悲惨一生

    [问题描述] 传说中有位神犇,因其一贯低调,所以人们连他活了多少岁都不知道. 好在XXXX文献上有段关于他生平细节的文字:神犇一生中, 幼年占了1/6,又过了1/12的青春期,又谈了1/6的恋爱后结婚 ...

  8. Java实现 LeetCode 47 全排列 II(二)

    47. 全排列 II 给定一个可包含重复数字的序列,返回所有不重复的全排列. 示例: 输入: [1,1,2] 输出: [ [1,1,2], [1,2,1], [2,1,1] ] class Solut ...

  9. java实现测量到的工程数据

    [12,127,85,66,27,34,15,344,156,344,29,47,-] 这是某设备测量到的工程数据. 因工程要求,需要找出最大的 5 个值. 一般的想法是对它排序,输出前 5 个.但当 ...

  10. PAT 锤子剪刀布

    大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入第 1 行给出正整数 ...