Opencv C++ 图像通道合并与拆分
图片下载:
链接: https://pan.baidu.com/s/1RppuU7_28Tri3Mgzv9k_fw 提取码: 2djg
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
using namespace std;
using namespace cv;
int main()
{
//1.读取图片
Mat img_jugg = imread("../data/dota_jugg.jpg");
Mat img_logo = imread("../data/dota_logo.jpg", 0);
//2.拆分图片
Mat img_channels[3];
split(img_jugg, img_channels);
//3.区域图片混合
Mat img_blue = img_channels[0];
Mat img_roi = img_blue(Rect(500, 250, img_logo.cols, img_logo.rows));
addWeighted(img_roi, 0.7, img_logo, 0.3, 0, img_roi);
//4.图片组合
Mat img_merge;
merge(img_channels, 3, img_merge);
//5.显示图片
imshow("img_jugg", img_jugg);
imshow("logo", img_logo);
imshow("blue", img_blue);
imshow("merge", img_merge);
waitKey();
destroyAllWindows();
return 0;
}
处理结果:
//拆分
void cv::split(
const Mat & src, //输入图片;
Mat * mvbegin //通道拆分后的图片;
)
//组合
void cv::merge(
const Mat* mv, //分通道图片数
size_t count, //合并的通道数
OutputArray dst //输出合并后的图片
)