序
- 在使用rect作為感興趣區域的時候一直沒有弄懂使用感興趣區域如何將處理后影像拼到原影像中 以及 使用感興趣區域定位的坐標要是不是原影像的坐標這兩個問題,查了很多資料,大多數都是用代碼一筆帶過,
- 自己寫的測驗代碼是利用感興趣區域在其中繪圖的程式,原圖死活沒有變化(最后發現是因為通道問題),所以寫一篇筆記梳理一下ROI和Rect相關的知識和應用,
感興趣區域:ROI
首先先回答下上面兩個問題
- ROI實際是指標指到了圖片設定的ROI的左上角,所以修改ROI原圖也同時會被修改
- 同上因為是指標指向原影像,所以在原影像中的坐標仍然需要進行計算得出,
截了rect資料結構的圖片:
感興趣區域的作用
- 感興趣區域是影像的區域區域,好處是使用感興趣區域進行處理時,不會被其他區域干擾、也可以加快處理速度等,
- 像截取了一張小圖片一樣,我們只對這張圖片進行處理就可以了,因其ROI指向的還是原圖,所以在對ROI區操作會影響原圖,
- openCV中比較常用的提取ROI則是使用RECT
Rect使用
// 利用Mat獲取ROI
//rect(左上x,左上y,長度,高度)
Rect rect(130, 20, 300-130, 230-20);
//取src源影像中ROI區域
Mat roi = src(rect);
//顯示ROI
imshow("roi", roi);
//將ROI克隆到image
Mat image = roi.clone();
當然,譬如將影像中一塊區域平移到另一塊區域,只需要設定兩個ROI,互相clone就可以,
Rect類常用處理:
Rect矩陣類常用函式
若創建一個Rect物件rect(100, 50, 50, 100)
rect.area();//回傳rect的面積 5000rect.size();//回傳rect的尺寸 [50 × 100]rect.tl();//回傳rect的左上頂點的坐標 [100, 50]rect.br();//回傳rect的右下頂點的坐標 [150, 150]rect.width();//回傳rect的寬度 50rect.height();//回傳rect的高度 100rect.contains(Point(x, y));//回傳布爾變數,判斷rect是否包含Point(x, y)點
Rect矩形交集并集、平移縮放等
- 交集與并集
a.rect = rect1 & rect2;
b.rect = rect1 | rect2; - 平移與縮放
a.rect = rect + Point(-100, 100);//平移,也就是左上頂點的x坐標-100,y坐標+100
b.rect = rect + Size(-100, 100);//縮放,左上頂點不變,寬度-100,高度+100 - 對比矩形,回傳bool
a.rect1 == rect2;
b.rect1 != rect2;
Rect建構式 Rect_(),形參串列為空,即定義一個空視窗(默認值為:x=y=width=height=0);Rect_(_Tp _x, _Tp _y, _Tp _width, _Tp _height),定義一個左上角點坐標為(_x, _y)的_width*_height矩形視窗;Rect_(const Rect_& r),使用其他的Rect_物件初始化;Rect_(const CvRect& r),使用CvRect物件初始化;Rect_(const Point_<_Tp>& org, const Size_<_Tp>& sz),分別將位置坐標(_x, _y)和視窗大小(_width, _height)用Point_和Size_物件初始化;Rect_(const Point_<_Tp>& pt1, const Point_<_Tp>& pt2),分別將坐標位置(_x, _y)和視窗大小(_width, _height)用Point_和Point_物件初始化,
參考文獻
- https://www.jianshu.com/p/8025fa953545
- https://blog.csdn.net/qq_41204464/article/details/89736793
撰寫時間
20210720
爺爺們點個贊三個連吧,比心心
/*
* **************************************************************************
* ******************** ********************
* ******************** COPYRIGHT INFORMATION ********************
* ******************** ********************
* **************************************************************************
* *
* _oo8oo_ *
* o8888888o *
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/'==='\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||_ \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' __/-. / *
* ___'. .' /--.--\ '. .'___ *
* ."" '< '.___\_<|>_/___.' >' "". *
* | | : `- \`.:`\ _ /`:.`/ -` : | | *
* \ \ `-. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/ ___.`____.-`===== *
* `=---=` *
* **************************************************************************
* ******************** ********************
* ******************** ********************
* ******************** 佛祖保佑 永遠無BUG ********************
* ******************** ********************
* **************************************************************************
*/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/292277.html
標籤:其他
上一篇:vue實作百度語音播報API呼叫
