zoukankan      html  css  js  c++  java
  • opencv学习笔记——Scalar数据结构的理解

    首先看一下Scalar的定义

        typedef struct Scalar  
        {  
            double val[4];  
        }Scalar;

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

    Scalar常用的使用场景如下:

    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:

    #include <iostream>  
    #include <opencv2/highgui/highgui.hpp>  
    #include <opencv2/core/core.hpp>  
    #include <opencv2/imgproc/imgproc.hpp>  
    #include <stdio.h>  
    using namespace std;  
    using namespace cv;  
    void scalar_demo1(){  
        Mat M(4,4,CV_32FC2,Scalar(1,3));  
        cout<<M<<endl;  
    }  
    void scalar_demo2(){  
        Mat M(4,4,CV_32FC3,Scalar(1,2,3));  
        cout<<M<<endl;  
    }  
    void scalar_demo3(){  
        Mat M(4,4,CV_32FC4,Scalar(1,2,3));  
        cout<<M<<endl;  
    }  
    int main(void)  
    {  
        //resize_img();  
        //convert_color_space();  
        scalar_demo1();  
        cout<<"**********************************"<<endl;  
        scalar_demo2();  
        cout<<"**********************************"<<endl;  
        scalar_demo3();  
        return 0;  
    } 

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

    实例2:

        #include <iostream>  
        #include <opencv2/highgui/highgui.hpp>  
        #include <opencv2/core/core.hpp>  
        #include <opencv2/imgproc/imgproc.hpp>  
        #include <stdio.h>  
        using namespace std;  
        using namespace cv;  
          
        void scalar_demo4(){  
            Mat blue_m(256,256,CV_8UC3,Scalar(255,0,0));  
            Mat green_m(256,256,CV_8UC3,Scalar(0,255,0));  
            Mat red_m(256,256,CV_8UC3,Scalar(0,0,255));  
            imshow("Blue",blue_m);  
            waitKey(0);  
            imshow("Green",green_m);  
            waitKey(0);  
            imshow("Red",red_m);  
            waitKey(0);  
              
        }  
        int main(void)  
        {  
            scalar_demo4();  
            return 0;  
        }  
  • 相关阅读:
    [Reinforcement Learning] Cross-entropy Method
    [Deep Learning] 正则化
    [Deep Learning] 常用的Active functions & Optimizers
    [Machine Learning] 浅谈LR算法的Cost Function
    [Deep Learning] 深度学习中消失的梯度
    [Machine Learning] logistic函数和softmax函数
    [Deep Learning] 神经网络基础
    [Machine Learning] Active Learning
    [Machine Learning & Algorithm]CAML机器学习系列2:深入浅出ML之Entropy-Based家族
    [Machine Learning & Algorithm]CAML机器学习系列1:深入浅出ML之Regression家族
  • 原文地址:https://www.cnblogs.com/feifanrensheng/p/9133517.html
Copyright © 2011-2022 走看看