天天看點

利用OpenCV的函數Rect()提取感興趣區域的C++代碼

​部落客于 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;
}

           

程式運作結果如下圖所示:

利用OpenCV的函數Rect()提取感興趣區域的C++代碼

繼續閱讀