OpenCV_复制一个或多个ROI图像区域

Posted 一生不过烟花

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV_复制一个或多个ROI图像区域相关的知识,希望对你有一定的参考价值。

在对图像进行处理过程中,我们经常需要对图像的某个或多个感兴趣区域进行处理。在OpenCV中我们能够非常方便地获取指定ROI区域的子图像。下面这段代码就演示了怎样获取指定单个ROI或多个ROI图像区域。


    1. //  复制一个或多个ROI图像区域  
    2. //  Author:  www.icvpr.com   
    3. //  Blog: http://blog.csdn.net/icvpr    
    4.   
    5.   
    6. #include <iostream>  
    7. #include <vector>  
    8.   
    9. #include <opencv2/opencv.hpp>  
    10.   
    11.   
    12. int main()  
    13. {  
    14.     cv::Mat srcImage = cv::imread("../test.jpg");  
    15.   
    16.     // 保存一个ROI图像区域  
    17.     cv::Mat roiImage;  
    18.     cv::Rect rect(100, 100, 100, 100);  
    19.     srcImage(rect).copyTo(roiImage);  
    20.     cv::imshow("roi", roiImage);  
    21.     cv::imwrite("roi.jpg", roiImage);  
    22.     cv::waitKey(0);  
    23.   
    24.   
    25.     // 保存多个ROI图像区域  
    26.     std::vector<cv::Rect> rects;  
    27.     for (size_t i = 0; i < 4; i++)  
    28.     {  
    29.         rects.push_back(cv::Rect(i*10, i*10, 50, 50));    
    30.     }  
    31.   
    32.   
    33.     std::vector<cv::Mat> subImages;  
    34.     for(int i = 0; i < rects.size(); i++)  
    35.     {  
    36.         cv::Mat tempImg;  
    37.         srcImage(rects[i]).copyTo(tempImg);  
    38.         subImages.push_back(tempImg);  
    39.   
    40.         cv::imwrite("roi.jpg", subImages[i]);  
    41.   
    42.         cv::imshow("subImage", subImages[i]);  
    43.         cv::waitKey(0);  
    44.     }  
    45.   
    46.   
    47.     return 0;  
    48. }  

以上是关于OpenCV_复制一个或多个ROI图像区域的主要内容,如果未能解决你的问题,请参考以下文章

opencv4opencv视频教程 C++ 5读写图像imreadimwrite读写像素at<>()修改像素值ROI区域选择(图像裁剪)RectVec3b与Vec3FCV_32F)

[C++][转载]opencv截取图像中某一区域的方法

请问大虾们,opencv如何只对图像选择区域提取特征点

opencv中使用ROI获取感兴趣区域时,如何获取一幅图像中相应的坐标,比如:

Python+OpenCV图像处理—— ROI与泛洪填充

OpenCV-C++选择提取感兴趣区域(ROI区域)附用鼠标选取ROI区域的代码