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

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

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

2019-11-11 04:54:02
字體:
來源:轉載
供稿:網友

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 张北县| 略阳县| 玉屏| 通江县| 西峡县| 观塘区| 民权县| 湄潭县| 龙川县| 金堂县| 北流市| 夏津县| 江安县| 枝江市| 定州市| 资兴市| 唐海县| 乐清市| 岢岚县| 泾源县| 含山县| 来凤县| 玉门市| 旅游| 明星| 临猗县| 方山县| 萨迦县| 隆安县| 新余市| 正蓝旗| 宕昌县| 禹州市| 和林格尔县| 神木县| 盐源县| 高碑店市| 汪清县| 普兰店市| 团风县| 余干县|