openCV作为已经成熟的开源库,很多操作它都已经有了高效,使用方便的方法。我的应用场景是这样的,从一张大图片中抠出一小部分,然后处理这一小部分后再放到大图像中。对于抠出来可以这样实现:
Rect rect = Rect( x, y, width, height);
Mat p = (Mat( src, rect)).clone();
利用src源图像的rect区域图像信息实例化一个新的Mat图像,并将这部分图像clone给这个新实例,不加上clone()的话新图像的data将指向src的data。这样之后将实现提取源图像中对角点(x,y)与(x+width, y+height)之间矩阵的图像部分到p中保存。
将小块的图像放入到大图像中,可以这样:
CvRect rect = CvRect( Rect(x, y, width, height));
src->copyTo(dst(rect));
用的是openCV的copyTo方法,原理是将(Mat *)src拷贝到dst的rect区域。
时间: 2024-10-14 20:05:47