图 像 通 道 的 合 并 与 分 离 图像通道的合并与分离 图像通道的合并与分离
1.视频教程:
B站、网易云课堂、腾讯课堂
2.代码地址:
Gitee
Github
3.存储地址:
Google云
百度云:
提取码:
1.通道分离
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
Mat src = imread("E:/cats.jpg", IMREAD_UNCHANGED);
if (src.empty()) {
printf("image is empty!!!");
return -1;
}
namedWindow("image", WINDOW_FREERATIO);
imshow("image", src);
vector<Mat> mv;
split(src, mv);
int size = mv.size();
printf("number of channels:%d\n",size);
imshow("blue channel", mv[0]);
imshow("green channel", mv[1]);
imshow("red channel", mv[2]);
waitKey(0);
destroyAllWindows();
return 0;
}
2.通道合并
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
Mat src = imread("E:/cats.jpg", IMREAD_UNCHANGED);
if (src.empty()) {
printf("image is empty!!!");
return -1;
}
namedWindow("image", WINDOW_FREERATIO);
imshow("image", src);
vector<Mat> mv;
split(src, mv);
int size = mv.size();
printf("number of channels:%d\n",size);
imshow("blue channel", mv[0]);
imshow("green channel", mv[1]);
imshow("red channel", mv[2]);
mv[1] = Scalar(0);
Mat dst;
merge(mv, dst); // 通道合并
imshow("result", dst);
waitKey(0);
destroyAllWindows();
return 0;
}
3.ROI
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
Mat src = imread("E:/cats.jpg", IMREAD_UNCHANGED);
if (src.empty()) {
printf("image is empty!!!");
return -1;
}
namedWindow("image", WINDOW_FREERATIO);
imshow("image", src);
// ROI
Rect roi;
roi.x = 100;
roi.y = 100;
roi.width = 250;
roi.height = 250;
Mat sub = src(roi);
imshow("roi", sub);
waitKey(0);
destroyAllWindows();
return 0;
}