OpenCV学习之Scalar数据类型
名詞解釋
首先看Scalar的英文釋義:
scalar的意思是標(biāo)量,標(biāo)量是什么意思呢?亦稱“無向量”。有些物理量,只具有數(shù)值大小,而沒有方向,部分有正負(fù)之分。物理學(xué)中,標(biāo)量(或作純量)指在坐標(biāo)變換下保持不變的物理量。用通俗的說法,標(biāo)量是只有大小,沒有方向的量。首先來看看,Scalar在OpenCV中的定義:
Scalar原來是的別名,那么Scalar_又是什么呢?看他在OpenCV中的定義:
原來Scalar是一個(gè)包含四個(gè)元素vector的模板類,他繼承于Vec,由于它繼承于Vec<Tp, 4> , Scalar_ 和 Scalar都能用于作為典型的包含四個(gè)元素的 vectors,此外,他們還能和CvScalar相互轉(zhuǎn)換, Scalar類型在OPenCV中被廣泛用于傳遞像素值。
Scalar應(yīng)用實(shí)例:
cv::Mat m(8, 8, CV_32FC2, cv::Scalar(3, 4));上面的代碼表示:創(chuàng)建一個(gè)2通道,且每個(gè)通道的值都為(3,4),深度為32,8行8列的圖像矩陣。CV_32F表示每個(gè)元素的值的類型為32位浮點(diǎn)數(shù),C2表示通道數(shù)為2,Scalar(3,4)表示對(duì)矩陣每個(gè)元素都賦值為(3,4),第一個(gè)通道中的值都是3,第二個(gè)通道中的值都是4。
示例代碼1:
#include <iostream> #include <opencv2/opencv.hpp> ? using namespace cv; ? int main() {cv::Mat m(3, 4, CV_32FC2, cv::Scalar(3, 4));std::cout << m << std::endl; }運(yùn)行結(jié)果如下:
示例代碼2:
#include <iostream> #include <opencv2/opencv.hpp> ? using namespace cv; ? int main() {//cv::Mat m(3, 4, CV_32FC2, cv::Scalar(3, 4));//std::cout << m << std::endl; ?Mat b(256, 256, CV_32FC3, cv::Scalar(255, 0, 0));Mat g(256, 256, CV_32FC3, cv::Scalar(0, 255, 0));Mat r(256, 256, CV_32FC3, cv::Scalar(0, 0, 255));imshow("blue", b);imshow("green", g);imshow("red", r);waitKey(0); }運(yùn)行結(jié)果如下圖,也可以看出,OpenCV里圖像存儲(chǔ)是按BGR順序來存儲(chǔ)的。
?
?
總結(jié)
以上是生活随笔為你收集整理的OpenCV学习之Scalar数据类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCV伪彩色applyColorM
- 下一篇: OpenCV计算图像的平均值和标准差的函