openCV作为已经成熟的开源库,很多操作它都已经有了高效,使用方便的方法.我的应用场景是这样的,从一张大图片中抠出一小部分,然后处理这一小部分后再放到大图像中.对于抠出来可以这样实现: Rect rect = Rect( x, y, width, height); Mat p = (Mat( src, rect)).clone(); 利用src源图像的rect区域图像信息实例化一个新的Mat图像,并将这部分图像clone给这个新实例,不加上clone()的话新图像的data将指向src的dat
两种方式Range和ROI #include <opencv2/opencv.hpp> using namespace std; using namespace cv; void testrange(Mat &img) { int m = img.rows; int n = img.cols; Mat temp = img(Range(,m*,n*0.8)); namedWindow("Range"); imshow("Range", temp)
在图像处理领域,我们常常需要设置感兴趣区域(ROI,region of interest),来专注或者简化我们的工作过程 .也就是从图像中选择的一个图像区域,这个区域是我们图像分析所关注的重点.我们圈定这个区域,以便进行进一步处理.而且,使用ROI指定我们想读入的目标,可以减少处理时间,增加精度,给图像处理来带不小的便利. 待续……………
OpenCV里提取目标轮廓的函数是findContours,它的输入图像是一幅二值图像,输出的是每一个连通区域的轮廓点的集合:vector<vector<Point>>. 外层vector的size代表了图像中轮廓的个数,里面vector的size代表了轮廓上点的个数. hiararchy参数和轮廓个数相同,每个轮廓contours[ i ]对应4个hierarchy元素hierarchy[ i ][ 0 ] ~hierarchy[ i ][ 3 ],分别表示后一个轮廓.前一个轮廓