scalar
首先单词scalar的意思是标量,但是我们经常可以看到Scalar是包含多个值的,很像是一个向量,这是怎么回事呢?很是让人感觉困惑。先收起我们的困惑,首先来看看,Scalar的定义:
[cpp] view plain copy
- typedef struct Scalar
- {
- double val[4];
- }Scalar;
使用:
Scalar常用的使用场景如下:
[cpp] view plain copy
- 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
- #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;
- }
实例2:
[cpp] view plain copy
- #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;
- }
相关阅读
ExecuteScalar执行查询,并返回查询所返回的结果集中第一行的第一列或空引用(如果结果集为空).忽略其他列或行.使用 ExecuteScalar