当一幅图像很大时,我们需要对截取一幅图像的感兴趣区域,这样会大大节约内存,在OpenCV中提供了两种截取ROI(感兴趣区域)的方式,在本文中将会有详细的介绍。
从原图中截取部分内容,就是将需要截取的部分在原图像中标记出来,可以用Rect数据结构标记,也可以用Range数据结构标记,这两种数据结构在下面给出。
Rect_(_Tp _x, _Tp _y, _Tp _width, _Tp _height)
cv::Range(int start, int end)
_Tp:一种数据类型。c++模板特性,可以用int,double,float等替换。
_x:矩形区域左上角第一个像素的x的坐标,也就是第一个像素的列数。
_y:矩形区域左上角第一个像素的y的坐标,也就是第一个像素的行数。
_width:矩形的宽,单位为像素,即矩形区域跨越的列数。
_height:矩形的高,单位为像素,即矩形区域跨越的行数。
start:区间的起始。
end:区间的结束。
在图像处理的过程中OpenCV中提供了copyTo()函数实现两类方法(其中在Mat类中定义的copyTo()有两种重载方式)进行深拷贝。函数原型如下:
void cv::Mat::copyTo(OutputArray m) const
void cv::Mat::copyTo(OutputArray m,
InputArray masl
)const
void cv::copyTo(InputArray src,
OutputArray dst,
InputArray mask
)