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

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

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

2019-11-11 04:57:12
字體:
來源:轉載
供稿:網友

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), 不然會出現運行時異常。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永顺县| 大丰市| 托克逊县| 鹤壁市| 天柱县| 夹江县| 河间市| 安新县| 杭州市| 双桥区| 厦门市| 荣昌县| 宜州市| 平遥县| 中阳县| 江门市| 惠州市| 沅陵县| 景洪市| 神农架林区| 商都县| 阜平县| 苏尼特右旗| 临城县| 华坪县| 张家港市| 新民市| 玉山县| 泽库县| 合川市| 武隆县| 手机| 沂源县| 宝应县| 石楼县| 鲁甸县| 航空| 平度市| 永兴县| 津市市| 尖扎县|