OpenCV学习笔记(三):多通道图像分离、混合算子:split(),merge()
生活随笔
收集整理的這篇文章主要介紹了
OpenCV学习笔记(三):多通道图像分离、混合算子:split(),merge()
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
OpenCV學習筆記(三):多通道圖像分離、混合算子:split(),merge()
#include <opencv2/opencv.hpp>#define BRG_BLUE_CHANNEL 0 #define BRG_GREEN_CHANNEL 1 #define BRG_RED_CHANNEL 2using namespace cv;int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);if(MultiChannelBlending(BRG_BLUE_CHANNEL)&MultiChannelBlending(BRG_GREEN_CHANNEL)&MultiChannelBlending(BRG_RED_CHANNEL)){cout << endl << "\n運行成功,得出了需要的圖像~! ";}waitKey(0);return a.exec(); }多通道混合函數(shù):
bool MultiChannelBlending(int what_channel ) {if(what_channel>=0&&what_channel<3){// 0、定義相關(guān)變量Mat srcImage;Mat logoImage;vector<Mat> channels; // 定義一個 Mat向量容器Mat image_Channel;// 1、讀入圖片logoImage = imread("F:/C++/2. OPENCV 3.1.0/TEST/dota_logo.jpg", 0); //單通道灰度圖讀取srcImage = imread("F:/C++/2. OPENCV 3.1.0/TEST/dota_jugg.jpg");if (!logoImage.data) { printf("Oh,no,讀取logoImage錯誤~! \n"); return false; }if (!srcImage.data) { printf("Oh,no,讀取srcImage錯誤~! \n"); return false; }// 2、把一個3通道圖像轉(zhuǎn)換成3個單通道圖像split(srcImage, channels);//分離色彩通道// 3、將原圖的通道引用返回給image_Channel,注意是引用,相當于兩者等價,修改其中一個另一個跟著變image_Channel = channels.at(what_channel); // BGR 通道選擇// 4、將原圖的藍色通道的(500,250)坐標處右下方的一塊區(qū)域和logo圖進行加權(quán)操作,將得到的混合結(jié)果存到image_Channel中addWeighted(image_Channel(Rect(500, 250, logoImage.cols, logoImage.rows)), 1.0,logoImage, 0.5, 0, image_Channel(Rect(500, 250, logoImage.cols, logoImage.rows)));// 5、將三個單通道重新合并成一個三通道merge(channels, srcImage);// 6、顯示效果圖switch(what_channel){case BRG_BLUE_CHANNEL:imshow(" <1>游戲原畫+logo_BLUE通道", srcImage);break;case BRG_GREEN_CHANNEL:imshow(" <1>游戲原畫+logo_GREEN通道", srcImage);break;case BRG_RED_CHANNEL:imshow(" <1>游戲原畫+logo_RED通道", srcImage);break;}return true;}else{return false;} }總結(jié)
以上是生活随笔為你收集整理的OpenCV学习笔记(三):多通道图像分离、混合算子:split(),merge()的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: latex插入空白行
- 下一篇: Input type (torch.cu