在openCV中,如何替换图像中的RGB ROI

Posted

技术标签:

【中文标题】在openCV中,如何替换图像中的RGB ROI【英文标题】:In openCV, how to replace an RGB ROI in image 【发布时间】:2012-08-05 22:55:18 【问题描述】:

我有一个 RGB 大图像和一个 RGB 小图像。 用较小的图像替换较大图像中的区域的最快方法是什么? 我可以定义多通道 ROI,然后使用 copyTo 吗?还是我必须将每个图像拆分为通道,替换 ROI,然后将它们重新组合为一个?

【问题讨论】:

【参考方案1】:

是的。多通道 ROI 和 copyTo 将起作用。比如:

int main(int argc,char** argv[])

    cv::Mat src = cv::imread("c:/src.jpg");

    //create a canvas with 10 pixels extra in each dim. Set all pixels to yellow.
    cv::Mat canvas(src.rows + 20, src.cols + 20, CV_8UC3, cv::Scalar(0, 255, 255));

    //create an ROI that will map to the location we want to copy the image into
    cv::Rect roi(10, 10, src.cols, src.rows);
    //initialize the ROI in the canvas. canvasROI now points to the location we want to copy to.
    cv::Mat canvasROI(canvas(roi));

    //perform the copy.
    src.copyTo(canvasROI);

    cv::namedWindow("original", 256);
    cv::namedWindow("canvas", 256);

    cv::imshow("original", src);
    cv::imshow("canvas", canvas);

    cv::waitKey();  


【讨论】:

以上是关于在openCV中,如何替换图像中的RGB ROI的主要内容,如果未能解决你的问题,请参考以下文章

如何在OpenCV中使用Adobe RGB色彩空间读取jpeg图像?

在openCV中访问某个图像中所有像素的RGB值

OpenCV 访问 MAT 对象中的 RGB 值

在 OpenCV 中加法混合两个部分重叠的图像

Opencv如何使用MatIterator迭代具有浮点RGB值的彩色图像?

使用 OpenCV 将 RGB 图像转换为 LMS,反之亦然