OpenCV學習筆記(3)——Scalar資料型別理解
定義:
首先單詞scalar的意思是標量,但是我們經常可以看到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;
}
執行結果如下:
相信讀到這你已經明白Scalar是用來幹什麼的了,它將各個通道的值構成一個整體,賦給具有相同通道數的矩陣元素。至於它開頭提到的它為什麼叫做標量,就不必再糾結了。
相關文章
- Python 3 學習筆記之——資料型別Python筆記資料型別
- JavaScript學習筆記 - 3.基本資料型別JavaScript筆記資料型別
- MySQL學習筆記--資料型別MySql筆記資料型別
- JavaScript學習筆記---資料型別JavaScript筆記資料型別
- Python 學習筆記——資料型別Python筆記資料型別
- MySQL學習筆記12:資料型別MySql筆記資料型別
- Flutter學習筆記(3)--Dart變數與基本資料型別Flutter筆記Dart變數資料型別
- Redis學習筆記(二)——Redis資料型別Redis筆記資料型別
- Python學習筆記(一) 資料型別Python筆記資料型別
- Python學習筆記(二)——資料型別Python筆記資料型別
- redis學習筆記2: Redis資料型別Redis筆記資料型別
- Java學習筆記8-資料型別Java筆記資料型別
- Python3學習筆記1,基本資料型別-Number、strPython筆記資料型別
- hive學習筆記之一:基本資料型別Hive筆記資料型別
- Python學習筆記2:基本資料型別Python筆記資料型別
- Hive學習筆記 2 Hive的資料型別Hive筆記資料型別
- MySQL學習筆記之資料型別詳解MySql筆記資料型別
- Redis學習筆記 – 資料型別與API(1)KeyRedis筆記資料型別API
- js學習之路3: 資料型別JS資料型別
- Python3學習筆記2,基本資料型別-list、tuple、set、dictPython筆記資料型別
- opencv學習筆記(一)OpenCV筆記
- 資料型別 - Go 學習記錄資料型別Go
- Java個人學習筆記-資料型別及取值範圍Java筆記資料型別
- TypeScript學習筆記(一)環境搭建和資料型別TypeScript筆記資料型別
- SAP UI5 資料型別(data type) 學習筆記UI資料型別筆記
- Go型別特性-學習筆記Go型別筆記
- Opencv學習筆記(3)---紙牌數字識別練習實踐專案OpenCV筆記
- 【OpenCV教程】OpenCV中的資料型別OpenCV資料型別
- python學習筆記1—python的基本資料型別Python筆記資料型別
- Object C學習筆記1-基本資料型別說明Object筆記資料型別
- jexcelapi學習筆記三——各資料型別的寫操作(修改)ExcelAPI筆記資料型別
- MySQL資料型別筆記MySql資料型別筆記
- TS學習筆記(一):基本型別筆記型別
- Redis 筆記(核心資料型別)Redis筆記資料型別
- Go 筆記之資料型別Go筆記資料型別
- python筆記--資料型別Python筆記資料型別
- C#學習筆記之值型別與引用型別C#筆記型別
- PLSQL學習——資料型別SQL資料型別