必威体育Betway必威体育官网
当前位置:首页 > IT技术

Scalar数据类型

时间:2019-08-18 03:11:03来源:IT技术作者:seo实验室小编阅读:80次「手机版」
 

scalar

首先单词scalar的意思是标量,但是我们经常可以看到Scalar是包含多个值的,很像是一个向量,这是怎么回事呢?很是让人感觉困惑。先收起我们的困惑,首先来看看,Scalar的定义:

[cpp] view plain copy

  1. typedef struct Scalar  
  2. {  
  3.     double val[4];  
  4. }Scalar;  

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

使用:

Scalar常用的使用场景如下:

[cpp] view plain copy

  1. 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:

[cpp] view plain copy

  1. #include <iOStream>  
  2. #include <OpenCV2/highgui/highgui.hpp>  
  3. #include <opencv2/core/core.hpp>  
  4. #include <opencv2/imgproc/imgproc.hpp>  
  5. #include <stdio.h>  
  6. using namespace std;  
  7. using namespace cv;  
  8. void scalar_demo1(){  
  9.     Mat M(4,4,CV_32FC2,Scalar(1,3));  
  10.     cout<<M<<endl;  
  11. }  
  12. void scalar_demo2(){  
  13.     Mat M(4,4,CV_32FC3,Scalar(1,2,3));  
  14.     cout<<M<<endl;  
  15. }  
  16. void scalar_demo3(){  
  17.     Mat M(4,4,CV_32FC4,Scalar(1,2,3));  
  18.     cout<<M<<endl;  
  19. }  
  20. int main(void)  
  21. {  
  22.     //resize_img();  
  23.     //convert_color_space();  
  24.     scalar_demo1();  
  25.     cout<<"**********************************"<<endl;  
  26.     scalar_demo2();  
  27.     cout<<"**********************************"<<endl;  
  28.     scalar_demo3();  
  29.     return 0;  
  30. }  

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

实例2:

[cpp] view plain copy

  1. #include <iostream>  
  2. #include <opencv2/highgui/highgui.hpp>  
  3. #include <opencv2/core/core.hpp>  
  4. #include <opencv2/imgproc/imgproc.hpp>  
  5. #include <stdio.h>  
  6. using namespace std;  
  7. using namespace cv;  
  8.   
  9. void scalar_demo4(){  
  10.     Mat blue_m(256,256,CV_8UC3,Scalar(255,0,0));  
  11.     Mat green_m(256,256,CV_8UC3,Scalar(0,255,0));  
  12.     Mat red_m(256,256,CV_8UC3,Scalar(0,0,255));  
  13.     imshow("Blue",blue_m);  
  14.     waitKey(0);  
  15.     imshow("Green",green_m);  
  16.     waitKey(0);  
  17.     imshow("Red",red_m);  
  18.     waitKey(0);  
  19.       
  20. }  
  21. int main(void)  
  22. {  
  23.     scalar_demo4();  
  24.     return 0;  

相关阅读

ExecuteScalar

ExecuteScalar执行查询,并返回查询所返回的结果集中第一行的第一列或空引用(如果结果集为空).忽略其他列或行.使用 ExecuteScalar

分享到:

栏目导航

推荐阅读

热门阅读