OpenCV学习之Scalar数据类型
生活随笔
收集整理的這篇文章主要介紹了
OpenCV学习之Scalar数据类型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
名詞解釋
首先看Scalar的英文釋義:
scalar的意思是標量,標量是什么意思呢?亦稱“無向量”。有些物理量,只具有數值大小,而沒有方向,部分有正負之分。物理學中,標量(或作純量)指在坐標變換下保持不變的物理量。用通俗的說法,標量是只有大小,沒有方向的量。首先來看看,Scalar在OpenCV中的定義:
Scalar原來是的別名,那么Scalar_又是什么呢?看他在OpenCV中的定義:
原來Scalar是一個包含四個元素vector的模板類,他繼承于Vec,由于它繼承于Vec<Tp, 4> , Scalar_ 和 Scalar都能用于作為典型的包含四個元素的 vectors,此外,他們還能和CvScalar相互轉換, Scalar類型在OPenCV中被廣泛用于傳遞像素值。
Scalar應用實例:
cv::Mat m(8, 8, CV_32FC2, cv::Scalar(3, 4));上面的代碼表示:創建一個2通道,且每個通道的值都為(3,4),深度為32,8行8列的圖像矩陣。CV_32F表示每個元素的值的類型為32位浮點數,C2表示通道數為2,Scalar(3,4)表示對矩陣每個元素都賦值為(3,4),第一個通道中的值都是3,第二個通道中的值都是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; }運行結果如下:
示例代碼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); }運行結果如下圖,也可以看出,OpenCV里圖像存儲是按BGR順序來存儲的。
?
?
總結
以上是生活随笔為你收集整理的OpenCV学习之Scalar数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCV伪彩色applyColorM
- 下一篇: OpenCV计算图像的平均值和标准差的函