【OpenCV3】图像通道分离与合并——cv::split()与cv::merge()详解
生活随笔
收集整理的這篇文章主要介紹了
【OpenCV3】图像通道分离与合并——cv::split()与cv::merge()详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在圖像處理中,尤其是處理多通道圖像時,有時需要對各個通道進行分離,分別處理;有時還需要對分離處理后的各個通道進行合并,重新合并成一個多通道的圖像。opencv2和opencv3中實現圖像通道的合并與分離的函數分別是cv::split()和cv::merge()。
1、多通道圖像的分離
cv::split()的具體調用方法如下:
void cv::split(const cv::Mat& mtx, //輸入圖像vector<Mat>& mv // 輸出的多通道序列(n個單通道序列) );
2、圖像多個通道的合并
cv::merge()的具體調用方法如下:
void merge(const vector<cv::Mat>& mv, // 輸入的多通道序列(n個單通道序列)cv::OutputArray dst // 輸出圖像,包含mv );
代碼示例如下:
#include <opencv2/opencv.hpp>int main() {cv::Mat src = imread("lenna.jpg", cv::IMREAD_COLOR);cv::imshow("src", src);// Split the image into different channelsstd::vector<cv::Mat> rgbChannels(3);split(src, rgbChannels);// Show individual channelscv::Mat blank_ch, fin_img;blank_ch = cv::Mat::zeros(cv::Size(src.cols, src.rows), CV_8UC1);// Showing Red Channel// G and B channels are kept as zero matrix for visual perceptionstd::vector<cv::Mat> channels_r;channels_r.push_back(blank_ch);channels_r.push_back(blank_ch);channels_r.push_back(rgbChannels[2]);/// Merge the three channelscv::merge(channels_r, fin_img);cv::imshow("R", fin_img);// Showing Green Channelstd::vector<cv::Mat> channels_g;channels_g.push_back(blank_ch);channels_g.push_back(rgbChannels[1]);channels_g.push_back(blank_ch);cv::merge(channels_g, fin_img);cv::imshow("G", fin_img);// Showing Blue Channelstd::vector<cv::Mat> channels_b;channels_b.push_back(rgbChannels[0]);channels_b.push_back(blank_ch);channels_b.push_back(blank_ch);cv::merge(channels_b, fin_img);cv::imshow("B", fin_img);cv::waitKey(0);return 0; }
顯示結果:
2017.04.27
總結
以上是生活随笔為你收集整理的【OpenCV3】图像通道分离与合并——cv::split()与cv::merge()详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【OpenCV3】图像旋转与平移——cv
- 下一篇: 【python图像处理】图像的缩放、旋转