国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

OpenCV學習筆記(03) :圖像ROI以及線性混合

2019-11-11 04:24:26
字體:
來源:轉載
供稿:網友

1. 圖像ROI獲取

源代碼#include<opencv2/opencv.hpp>using namespace cv;int main(){ Mat src = imread("E://Test.jpg"); Mat src_ROI; src_ROI = src(Rect(100, 0, 300, 300)).clone(); imshow("SRC",src); imshow("ROI", src_ROI); waitKey(0); return 0;}運行結果 從原圖片中截取頭像 這里寫圖片描述程序解讀 實現程序中ROI選取只通過一句src(Rect(100, 0, 300, 300))即可實現,原理是什么呢?通過讀API發現,Mat類定義中,對括號運算符進行了重載Mat cv::Mat::Operator() (const Rect & roi) const;

通過 cv::Rect()函數指定ROI區域范圍,返回Mat型ROI,注意,這里的ROI是引用值,如果原圖像被修改,ROI會隨之而變。 除此之外,還可以通過Range類來指定ROI區域,用法與上類似。

Mat cv::Mat::operator()(Range rowRange,Range colRange)const

Range類是OpenCV中的抽象數據類,表示連續數據的起始位置,可以理解為,Range=[star,end];

2. 圖像的線性混合

源代碼#include<opencv2/opencv.hpp>using namespace cv;int main(){ Mat src1 = imread("E://1.jpg"); Mat src2 = imread("E://2.jpg"); Mat dst; imshow("src1", src1); imshow("src2", src2); addWeighted(src1, 0.5, src2, 0.5,0.0,dst); imshow("dst", dst); waitKey(0); imwrite("E://3.jpg", dst); return 0;}運行結果 通過讀取并混合src1和src2,得到dst圖像,并保存至本地。 這里寫圖片描述 這里寫圖片描述 這里寫圖片描述程序解讀 圖像混合通過cv::addWeighted() 函數來實現,其定義為:void cv::addWeighted( InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype = -1 )

其中,InputArray和OutputArray是OpenCV提供的強大的接口類,兼容Mat類型,因此,在這里,可以當做Mat類型進行處理。

alpha和beta分別是輸入圖像對應的權重,均為double型,而gamma是混合圖像相加的標量,該過程計算如下:

dst(I)=saturate(src1(I)?alpha+src2(I)?beta+gamma)

I表示圖像,gamma是通過+的運算符重載,加到每一個像素點上。

注意,輸入的圖像必須具有相同的圖像尺寸(rows和cols)和深度(depth和channels), 不然會出現運行時異常。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 河东区| 阿拉善左旗| 东海县| 西盟| 平利县| 屯门区| 略阳县| 繁昌县| 海林市| 康保县| 金湖县| 措美县| 固镇县| 长子县| 蛟河市| 丹阳市| 沂南县| 任丘市| 兴安盟| 平定县| 德令哈市| 晋城| 龙胜| 新津县| 无为县| 平凉市| 泽普县| 巴东县| 昌平区| 岳池县| 清水河县| 綦江县| 行唐县| 上高县| 乌审旗| 汉川市| 伊川县| 石柱| 潞西市| 云浮市| 新泰市|