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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

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

2019-11-11 05:32:01
字體:
供稿:網(wǎng)友

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;}運行結(jié)果 從原圖片中截取頭像 這里寫圖片描述程序解讀 實現(xiàn)程序中ROI選取只通過一句src(Rect(100, 0, 300, 300))即可實現(xiàn),原理是什么呢?通過讀API發(fā)現(xiàn),Mat類定義中,對括號運算符進(jìn)行了重載Mat cv::Mat::Operator() (const Rect & roi) const;

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

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

Range類是OpenCV中的抽象數(shù)據(jù)類,表示連續(xù)數(shù)據(jù)的起始位置,可以理解為,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;}運行結(jié)果 通過讀取并混合src1和src2,得到dst圖像,并保存至本地。 這里寫圖片描述 這里寫圖片描述 這里寫圖片描述程序解讀 圖像混合通過cv::addWeighted() 函數(shù)來實現(xiàn),其定義為:void cv::addWeighted( InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype = -1 )

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

alpha和beta分別是輸入圖像對應(yīng)的權(quán)重,均為double型,而gamma是混合圖像相加的標(biāo)量,該過程計算如下:

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

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

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


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 南宫市| 墨竹工卡县| 太仓市| 昔阳县| 柏乡县| 淮安市| 班戈县| 邳州市| 潮州市| 瑞安市| 长宁县| 尼勒克县| 保靖县| 札达县| 交口县| 阳江市| 弋阳县| 阿拉善左旗| 沈阳市| 曲靖市| 义乌市| 马边| 东乌珠穆沁旗| 密云县| 邛崃市| 新丰县| 和林格尔县| 罗甸县| 合作市| 碌曲县| 益阳市| 淅川县| 麟游县| 吴川市| 抚顺县| 神池县| 龙泉市| 深州市| 左贡县| 平乐县| 和静县|