索引地址:系列索引
Rect()
一个矩形对象,是一个面,面由点组成。最基本的包括x,y,width,height,即在x轴起点(一般为0)y轴起点(一般为0)宽度和高度。
此对象还有面积,是否包含点等。
函数原型:
1
| typedef Rect_<int> Rect;
|
也就是说Rect()是用int类型实例化的Rect_,那么我们具体看一下Rect_的函数原型。
1 2 3 4 5 6
| Rect_(); Rect_(_Tp _x, _Tp _y, _Tp _width, _Tp _height); Rect_(const Rect_& r); Rect_(const CvRect& r); Rect_(const Point_<_Tp>& org, const Size_<_Tp>& sz); Rect_(const Point_<_Tp>& pt1, const Point_<_Tp>& pt2);
|
就是一个面最基本的,左上角x,y的起始点,然后是宽度和高度。可以用于指定上图中的黑色方框。也就是说,可以用于获取一张图片中某个子图片。
CvRect和Rect有什么区别呢?没什么区别,CvRect是C的函数,Rect是C++。
以下是Rect的常用用法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| #include <iostream> #include <opencv2/opencv.hpp> #include <vector>
using namespace std; using namespace cv;
int main() { Mat image = imread("lena.jpg"); Rect rect1(256, 256, 128, 128); Rect rect2(224, 224, 128, 128);
Mat roi1; image(rect1).copyTo(roi1); imshow("1", roi1); waitKey(0);
Mat roi2; image(rect2).copyTo(roi2); imshow("2", roi2); waitKey(0);
cv::Rect rect3 = rect1 & rect2; Mat roi3; image(rect3).copyTo(roi3); imshow("3", roi3); waitKey(0);
Rect rect4 = rect1 | rect2; Mat roi4; image(rect4).copyTo(roi4); imshow("4", roi4); waitKey(0);
Rect rect5(10, 10, 128, 128); roi1.copyTo(image(rect5)); imshow("5", image); waitKey(0); }
|
测试效果如图:
两幅图像的&
和|
操作之后在介绍。