《OpenCV3程式設計入門》——4.2 OpenCV中常用資料結構和函式(Point、Scalar、Size、Rect、cvtColor)
阿新 • • 發佈:2018-11-28
目錄
1、點的表示:Point類
Point類資料結構表示了二維座標系下的點,即由影象座標x和y指定的2D點。用法如下:
Point point;
point.x = 10;
point.y = 8;
或者:
Point point = Point(10, 8)
在OpenCV中有如下定義:
- typedef Point_<int> Point2i;
- typedef Point2i Point;
- typedef Point_<float> Point2f;
所以,Point_<int>、Point2i、Point互相等價,Point_<float>、Point2f互相等價
2、顏色的表示:Scalar類
Scalar()表示具有4個元素的陣列,在OpenCV中用於傳遞畫素值。
如下邊顏色表示式,表示定義的RGB顏色值:紅色分量為c,綠色分量為b,藍色分量為a(OpenCV中顏色通道為BGR):
Scalar(a, b, c)
Scalar類其實就是Scalar_<double>。
3、尺寸的表示:Size類
OpenCV中有如下定義:
- typedef Size_<int> Size2i;
- typedef Size2i Size;
所以,Size_<int>、Size2i、Size這三個型別是等價的。
OpenCV中常用的Size建構函式為:
- Size_<int>(_TP _width, _Tp _height)
可以使用XXX.width和XXX.height來分別表示寬度和高度。
下邊是Size的一個例子:
Size(5,5) //構造出的Size寬度和高度都為5,即XXX.width和XXX.height都為5
4、矩形的表示:Rect類
Rect類的成員變數有x,y,width,height,分別為左上角點的座標和矩形的寬和高。
常用的成員函式有:
- Size():返回值為Size
- area():返回矩形的面積
- contains(Points):判斷點是否在矩形內
- inside(Rect):判斷矩形是否在該矩形內
- tl:返回左上角點座標
- br:返回右下角點座標
求兩個矩形的交集和並集:
Rect rect = rect1 & rect2;
Rect rect = rect1 | rect2;
矩形進行平移操作和縮放操作:
Rect rectShift = rect + point;
Rect rectScale = rect + size;
5、顏色空間轉換:cvtColor()函式
cvtColor()函式是顏色空間轉換函式,能夠實現RGB顏色向HSV、HSI等顏色空間的轉換,也可以轉換為灰度影象。
格式如下:
void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0)
引數說明:
第一個引數:輸入影象
第二個引數:輸出影象
第三個引數:顏色空間轉換識別符號
第四個引數:目標影象的通道數,若該引數為0,表示目標影象取源影象的通道數。
下邊是一個呼叫示例:
cvtColor(stcImage, dstImage, COLOR_GRAY2BGR)
cvtColor()函式識別符號如下表所示:
下邊程式碼shi關於cvtColor()函式的測試:
# include <opencv2/opencv.hpp>
# include <iostream>
using namespace cv;
using namespace std;
void main(){
Mat srcImage = imread("1.jpg", 1); //載入影象
Mat dstImage_gray, dstImage_Lab, dstImage_HLS;
imshow("原始圖", srcImage); //顯示原始圖
cvtColor(srcImage, dstImage_gray, COLOR_BGR2GRAY); //轉換顏色空間
imshow("Gray效果圖", dstImage_gray); //顯示效果圖
cvtColor(srcImage, dstImage_Lab, COLOR_BGR2Lab);
imshow("Lab效果圖", dstImage_Lab);
cvtColor(srcImage, dstImage_HLS, COLOR_BGR2HSV);
imshow("HLS效果圖", dstImage_HLS);
waitKey(); //保持視窗顯示
}
執行就結果:
原始圖 | Gray效果圖 |
Lab效果圖 | HLS效果圖 |