• 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;
    
    }

  • 相关阅读:
    Apache Spark探秘:利用Intellij IDEA构建开发环境
    Scala 安装
    Mac OS Git 安装
    Druid:一个用于大数据实时处理的开源分布式系统
    批量kill Linux环境下的任务
    Xshell如何设置,当连接断开时保留Session,保留原文字
    Superset
    mac连接Windows远程桌面
    IOS应用开发版本控制工具之Versions使用
    “不擅长编码?”-可视化编程插件来解决
  • 原文地址:https://www.cnblogs.com/ligei/p/11478184.html
Copyright © 2020-2023  润新知