zoukankan      html  css  js  c++  java
  • opencv Scalar

    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(200,250,CV_32FC3,cv::Scalar(0,0,0));
        imshow("Scalar(0,0,0)",mat);
    
        cv::Mat mat1(200,250,CV_32FC3,cv::Scalar(0,0,255));
        imshow("Scalar(0,0,255)",mat1);
    
        cv::Mat mat2(200,250,CV_32FC3,cv::Scalar(0,255,0));
        imshow("Scalar(0,255,0)",mat2);
    
        cv::Mat mat3(200,250,CV_32FC3,cv::Scalar(255,0,0));
        imshow("Scalar(255,0,0)",mat3);
    
        cv::Mat mat4(200,250,CV_32FC3,cv::Scalar(0,255,255));
        imshow("Scalar(0,255,255)",mat4);
    
        cv::Mat mat5(200,250,CV_32FC3,cv::Scalar(255,0,255));
        imshow("Scalar(255,0,255)",mat5);
    
        cv::Mat mat6(200,250,CV_32FC3,cv::Scalar(255,255,0));
        imshow("Scalar(255,255,0)",mat6);
    
        cv::Mat mat7(200,250,CV_32FC3,cv::Scalar(255,255,255));
        imshow("Scalar(255,255,255)",mat7);
    
        cv::Mat mat8(200,250,CV_32FC4,cv::Scalar(0,0,0,255));
        imshow("Scalar(0,0,0,255)",mat8);
    
        cv::Mat mat9(200,250,CV_32FC4,cv::Scalar(0,0,255,255));
        imshow("Scalar(0,0,255,255)",mat9);
    
        cv::Mat mat10(200,250,CV_32FC4,cv::Scalar(0,255,0,255));
        imshow("Scalar(0,255,0,255)",mat10);
    
        cv::Mat mat11(200,250,CV_32FC4,cv::Scalar(255,0,0,255));
        imshow("Scalar(255,0,0,255)",mat11);
    
        cv::Mat mat12(200,250,CV_32FC4,cv::Scalar(0,255,255,255));
        imshow("Scalar(0,255,255,255)",mat12);
    
        cv::Mat mat13(200,250,CV_32FC4,cv::Scalar(255,0,255,255));
        imshow("Scalar(255,0,255,255)",mat13);
    
        cv::Mat mat14(200,250,CV_32FC4,cv::Scalar(255,255,0,255));
        imshow("Scalar(255,255,0,255)",mat14);
    
        cv::Mat mat15(200,250,CV_32FC4,cv::Scalar(255,255,255,255));
        imshow("Scalar(255,255,255,255)",mat15);
    
        cv::waitKey(0);
        return 0;
    
    }

  • 相关阅读:
    11 Apr 18 类与对象 对象的使用 一切皆对象
    10 Apr 18 项目构架 hashlib模块 subprocess模块 configparser模块 面向对象的编程 类与对象
    9 Apr 18 shelve模块 xml模块 re模块
    8 Apr 18 包的使用 常用模块
    定义一个Student类,包含名字一个数据成员,定义无参构造函数、有参构造函数、拷贝构造函数、析构函数及对于名字的封装函数,在main函数中实例化Student对象,并访问相关函数,观察运行结果。
    皮马印第安人糖尿病数据集免费下载分享
    机器学习之模型训练(二)皮马印第安人糖尿病数据集
    anaconda的虚拟环境sklearn中如何安装pandas
    人工智能之模型评估之参数选择
    人工智能之模型评估之数据分离
  • 原文地址:https://www.cnblogs.com/ligei/p/11478184.html
Copyright © 2011-2022 走看看