加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

opencv Scalar

发布时间:2020-12-16 09:04:27 所属栏目:安全 来源:网络整理
导读:templatetypename _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); templatetypename _Tp2,int cn Scalar_(const Vec_Tp2,cn v); //! returns a scalar wi
 
 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,CV_32FC3,scalar2);
    std::cout<<mat2<<std::endl;
    std::cout<<std::endl;
 
 
    cv::Scalar scalar3(0,0);
    cv::Mat mat3(4,CV_32FC4,scalar3);
    std::cout<<mat3<<std::endl;
    return 0;
 
 
}
  
  
cv::Mat mat(2,3,scalar)表示创建单通道,且每个通道的值都为125,深度为8,2行3列的图像矩阵。
CV_8UC1表示每个元素的值的类型为8位无符号整形,C1表示通道数为1,scalar(125)表示对矩阵每个元素都赋值为125.
cv::Mat mat1(4,4,scalar1)表示创建两通道,且每个通道的值分别为(0,255),深度为32,4行4列的图像矩阵。
CV_32FC2表示每个元素的值的类型为32位浮点数,C2表示通道数为2,scalar1(0,255)第一个通道中的值都是0,第二个通道中的值都是255。
cv::Mat mat2(4,scalar2)表示创建三通道,且每个通道的值分别为(0,255),深度为32,4行4列的图像矩阵。
CV_32FC3表示每个元素的值的类型为32位浮点数,C3表示通道数为3,scalar2(0,255)第一个通道中的值都是0,第二个通道中的值都是255,第三个通道中的值都是255。
cv::Mat mat3(4,scalar3)表示创建四通道,且每个通道的值分别为(0,0),深度为32,4行4列的图像矩阵。
CV_32FC4表示每个元素的值的类型为32位浮点数,C4表示通道数为4,scalar2(0,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::Scalar(0,0,0));
    imshow("Scalar(0,0)",mat);

    cv::Mat mat1(200,255));
    imshow("Scalar(0,255)",mat1);

    cv::Mat mat2(200,255,mat2);

    cv::Mat mat3(200,cv::Scalar(255,0));
    imshow("Scalar(255,mat3);

    cv::Mat mat4(200,mat4);

    cv::Mat mat5(200,255));
    imshow("Scalar(255,mat5);

    cv::Mat mat6(200,mat6);

    cv::Mat mat7(200,mat7);

    cv::Mat mat8(200,mat8);

    cv::Mat mat9(200,mat9);

    cv::Mat mat10(200,mat10);

    cv::Mat mat11(200,mat11);

    cv::Mat mat12(200,mat12);

    cv::Mat mat13(200,mat13);

    cv::Mat mat14(200,mat14);

    cv::Mat mat15(200,mat15);

    cv::waitKey(0);
    return 0;

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读