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

Linux大全评论1.6K views阅读模式

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

//  复制一个或多个ROI图像区域
#include <iostream>
#include <vector>

#include <opencv2/opencv.hpp>

int main()
{
 cv::Mat srcImage = cv::imread("../test.jpg");

 // 保存一个ROI图像区域
 cv::Mat roiImage;
 cv::Rect rect(100, 100, 100, 100);
 srcImage(rect).copyTo(roiImage);
 cv::imshow("roi", roiImage);
 cv::waitKey(0);

 // 保存多个ROI图像区域
 std::vector<cv::Rect> rects;
 for (size_t i = 0; i < 4; i++)
 {
  rects.push_back(cv::Rect(i*10, i*10, 50, 50)); 
 }

 std::vector<cv::Mat> subImages;
 for(int i = 0; i < rects.size(); i++)
 {
  cv::Mat tempImg;
  srcImage(rects[i]).copyTo(tempImg);
  subImages.push_back(tempImg);

  cv::imshow("subImage", subImages[i]);
  cv::waitKey(0);
 }

 return 0;
}

原图

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

单个ROI图像区域

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

企鹅博客
  • 本文由 发表于 2019年9月7日 16:02:43
  • 转载请务必保留本文链接:https://www.qieseo.com/177306.html

发表评论