OPENCV-4 学习笔记
生活随笔
收集整理的這篇文章主要介紹了
OPENCV-4 学习笔记
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
OPENCV-4 學習筆記
ROI—設(shè)定感興趣的區(qū)域(region of interest)
定義:
Mat imageROI; //方法一:通過Rect指定矩形區(qū)域 imageROI=image(Rect(500,250,logo.cols,logo.rows)) //方法二 指定感興趣行或列的范圍(Range) imageROI=srcImage3(Range(250,250+logoImage.rows),Range(200,200+logoImage.cols));利用ROI將一幅圖加到另一幅圖的指定位置
bool ROI_AddImage() { //【1】讀入圖像 Mat srcImage1= imread("1.jpg"); Mat logoImage= imread("2.jpg"); if(!srcImage1.data ) { printf("讀取srcImage1錯誤~! \n"); return false; } if(!logoImage.data ) { printf("讀取logoImage錯誤~! \n"); return false; } //【2】定義一個Mat類型并給其設(shè)定ROI區(qū)域 Mat imageROI= srcImage1(Rect(200,250,logoImage.cols,logoImage.rows)); //【3】加載掩模(必須是灰度圖) Mat mask= imread("2.jpg",0); //【4】將掩膜拷貝到ROI logoImage.copyTo(imageROI,mask); //【5】顯示結(jié)果 namedWindow("<1>利用ROI實現(xiàn)圖像疊加示例窗口"); imshow("<1>利用ROI實現(xiàn)圖像疊加示例窗口",srcImage1); return true; }初級圖像混合——線性混合操作
公式:
實現(xiàn)函數(shù):addWeighted函數(shù)
void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype=-1);dst = src1[I]*alpha+ src2[I]*beta + gamma;
bool LinearBlending()
//【1】讀取圖像 ( 兩幅圖片需為同樣的類型和尺寸 ) srcImage2= imread("mogu.jpg"); srcImage3= imread("rain.jpg"); if(!srcImage2.data ) { printf("你妹,讀取srcImage2錯誤~! \n"); return false; } if(!srcImage3.data ) { printf("你妹,讀取srcImage3錯誤~! \n"); return false; } //【2】做圖像混合加權(quán)操作 betaValue= ( 1.0 - alphaValue ); addWeighted(srcImage2, alphaValue, srcImage3, betaValue, 0.0, dstImage); //【3】創(chuàng)建并顯示原圖窗口 namedWindow("<2>線性混合示例窗口【原圖】 by淺墨", 1); imshow("<2>線性混合示例窗口【原圖】 by淺墨", srcImage2 ); namedWindow("<3>線性混合示例窗口【效果圖】 by淺墨", 1); imshow("<3>線性混合示例窗口【效果圖】 by淺墨", dstImage ); return true;
{
//【0】定義一些局部變量
double alphaValue = 0.5;
double betaValue;
Mat srcImage2, srcImage3, dstImage;}
分離顏色通道
- split函數(shù)—將一個多通道數(shù)組分離成幾個單通道數(shù)組
void split(const Mat& src, Mat*mvbegin);
void split(InputArray m,OutputArrayOfArrays mv);
//第一個參數(shù),InputArray類型的m或者const Mat&類型的src,填我們需要進行分離的多通道數(shù)組。
//第二個參數(shù),OutputArrayOfArrays類型的mv,填函數(shù)的輸出數(shù)組或者輸出的vector容器。 - merge函數(shù)—將多個數(shù)組組合合并成一個多通道的數(shù)組。
它通過組合一些給定的單通道數(shù)組,將這些孤立的單通道數(shù)組合并成一個多通道的數(shù)組,從而創(chuàng)建出一個由多個單通道陣列組成的多通道陣列
void merge(const Mat* mv, size_tcount, OutputArray dst)
void (InputArrayOfArrays mv,OutputArray dst)
創(chuàng)建軌跡條——createTrackbar函數(shù)
int createTrackbar(conststring& trackbarname, conststring& winname,int* value, int count, TrackbarCallback onChange=0,void* userdata=0); //創(chuàng)建軌跡條 createTrackbar("對比度:", "【效果圖窗口】",&g_nContrastValue, 300,ContrastAndBright );// g_nContrastValue為全局的整型變量,ContrastAndBright為回調(diào)函數(shù)的函數(shù)名(即指向函數(shù)地址的指針)獲取當前軌跡條的位置——getTrackbarPos函數(shù)
int getTrackbarPos(conststring& trackbarname, conststring& winname);總結(jié)
以上是生活随笔為你收集整理的OPENCV-4 学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 笔记本如何与其他计算机共享,笔记本电脑怎
- 下一篇: Android 系统蓝牙 控制手机端音乐