opencv如何截取子图像

 首先用GetSubRect函数确定子图像的区域
GetSubRect 返回输入的图像或矩阵的矩形数组子集的矩阵头
CvMat* cvGetSubRect( const CvArr* arr, CvMat* submat, CvRect rect ); arr 输入数组。 submat 指向矩形数组子集矩阵头的指针。 rect 以0坐标为基准的ROI。
函数 cvGetSubRect 根据指定的数组矩形返回矩阵头,换句话说,函数允许像处理一个独立数组一样处理输入数组的一个指定子矩形。函数在处理时要考虑进输入数组的ROI,因此数组的ROI是实际上被提取的。

 然后用GetImage获取Image图像

GetImage

 
GetImage 从不确定数组返回图像头
IplImage* cvGetImage( const CvArr* arr, IplImage* image_header ); arr
输入数组. image_header 指向IplImage结构的指针,该结构存贮在一个临时缓存 . 函数 cvGetImage 从输出数组获得图头,该数组可以是矩阵- CvMat*, 或图像 - IplImage*。 如果是图像的话函数只是返回输入参数的指针,如果是 CvMat* 的话函数用输入参数矩阵初始化图像头。因此如果我们把 IplImage 转换成 CvMat 然后再转换 CvMat 回 IplImage,如果ROI被设置过了我们可能会获得不同的头,这样一些计算图像跨度的IPL函数就会失败。

 例如:

  cvGetSubRect(src,sub,cvRect(minLoc.x,minLoc.y,templatW,templatH));//截取图像,获取子图像矩阵
  cvGetImage( sub, subImage);//得到子图像

posted @ 2013-10-03 15:02  hdf_123  阅读(2066)  评论(0编辑  收藏  举报