博主于 2022-11-11 重写了这篇博文,
重写的博文不仅优化了本博文中的代码,
还详细介绍了Rect的两种构造方法,
并且还附了用鼠标截取感兴趣区域的代码,
重写的博文见 https://www.hhai.cc/thread-127-1-1.html
代码和运行结果如下,程序很好读懂,就不多作解释了!
源码如下:(程序中用到的图像的下载链接:https://pan.baidu.com/s/1kUEDw5x)
//出处:昊虹AI笔记网(hhai.cc)
//用心记录计算机视觉和AI技术
//OpenCV版本 OpenCV3.0
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
// 全局变量源图像
cv::Mat srcImage;
// 方法1 利用Rect选择区域(100, 180, 150, 50)
void regionExtraction(int xRoi, int yRoi,
int widthRoi, int heightRoi )
{
// 指定坐标区域提取
cv::Mat roiImage(srcImage.rows,srcImage.cols,CV_8UC3);
std::cout << srcImage.rows << " " <<
srcImage.cols << std::endl;
// 将兴趣区域拷贝到目标图像
srcImage(cv::Rect(xRoi,yRoi,widthRoi,//这句话我专门开了篇博文来解释
heightRoi)).copyTo(roiImage);// http://blog.csdn.net/wenhao_ir/article/details/51543990
cv::imshow("roiImage",roiImage);
cv::waitKey(0);
}
int main()
{
// 源图像载入及判断
srcImage = cv::imread("flower3.jpg");
if( !srcImage.data )
return 1;
cv::imshow("ROIing", srcImage);
cv::waitKey(0);
// 方法1 利用Rect选择区域(100, 180, 150, 50)
int xRoi = 80;
int yRoi = 180;
int widthRoi = 150;
int heightRoi = 100;
regionExtraction(xRoi,yRoi,widthRoi,heightRoi);
return 0;
}
程序运行结果如下图所示: