图片叠加是图像处理的基本操作。这个笔记是用来练习图像感兴趣区域ROI的。
ROI(Region of Interest) 是指图像中的一个矩形区域,表明后续的程序需要单独处理这一个小区域。如果对图像设置了ROI,那么,Opencv的大多数函数只在该ROI区域内运算(只处理该ROI区域,效果有点儿类似于对其他部分锁定不得编辑),如果没设ROI的话,就会处理整幅图像。需要注意的时候,设置的ROI一定在图像内部,而不能超出图像的范围。(超出了会怎样?没试过,可能会被重置为允许的图像最大值,有兴趣的同学可以试试看)
老版本中对图像设定ROI的函数是:
cvSetImageROI(IplImage* src,CvRect rect);
src表示的是源图像,rect只的是ROI区域。
取消设定的ROI区域:
cvResetImageROI(src);
新的2.x版本则使用了更好的数据结构Mat来处理。所谓对src设置ROI其实是新建一个Mat header,但是data还是在src里面,这样操作ROI其实就是对原图像的操作。非常简单!
设置ROI:
Mat roi = Mat(src, Rect(x, y, width, height));
设置了ROI,剪裁,拼接,叠加之类的操作就非常的简单了。
比如叠加到指定区域,
water_mark.copyTo(roi);
带透明的叠加,其中alpha,beta,gamma是透明度,double型(0~1),最终roi = roi*alpha &#