利用OpenCV的函数Rect()提取感兴趣区域的C++代码

本文介绍使用OpenCV进行感兴趣区域(ROI)提取的方法,并提供了一段详细的代码示例,展示了如何通过Rect对象从图像中选取特定区域。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

​博主于 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.youkuaiyun.com/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;
}

程序运行结果如下图所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值