首页 > 其他分享 >分离通道、合并通道

分离通道、合并通道

时间:2024-08-20 16:51:39浏览次数:10  
标签:imshow Mat img 分离 合并 vctMatChannel include cv 通道

学OpenCV

================================================

颜色模型之间可以互相转换

================================================

 1 #include <iostream>
 2 
 3 #include <opencv2/opencv.hpp>
 4 #include <opencv2/core/utils/logger.hpp>
 5 
 6 #include <vector>
 7 #include <string>
 8 
 9 void Test1()
10 {
11     cv::Mat img;
12     img = cv::imread(R"(C:\testNoGit\learnOpenCV4-master\data\lena.png)");
13     if (img.empty())
14     {
15         std::cout << "请确认图像文件名是否正确" << std::endl;
16         return ;
17     }
18 
19     std::vector<cv::Mat> vctMatChannel;
20     cv::split(img, vctMatChannel);
21 
22     int num = vctMatChannel.size();
23 
24     for (int i = 0; i < num; i++)
25     {
26         std::string strCaption = std::string("Test1 channel ") + std::to_string(i);
27         
28         cv::imshow(strCaption, vctMatChannel[i]);
29     }
30 
31     cv::Mat mat0 = cv::Mat::zeros(img.rows, img.cols,CV_8UC1);
32     vctMatChannel[0] = mat0;//BGR
33     vctMatChannel[1] = mat0;//BGR
34     cv::Mat mat00R;
35     cv::merge(vctMatChannel, mat00R);
36     cv::imshow("Test1 00R", mat00R);
37 
38     vctMatChannel.push_back(mat0);
39     cv::Mat mat00R0;
40     cv::merge(vctMatChannel, mat00R0);
41     cv::imshow("Test1 00R0", mat00R0);
42 
43     vctMatChannel.push_back(mat0);
44     cv::Mat mat00R00;
45     cv::merge(vctMatChannel, mat00R00);
46     //cv::imshow("Test1 00R00", mat00R00);//imshow崩溃。因为通常RGBA最多是4通道,因此多于4通道崩溃。
47 }
48 
49 void Test2()
50 {
51     cv::Mat img;
52     img = cv::imread(R"(C:\testNoGit\learnOpenCV4-master\data\lena.png)");
53     if (img.empty())
54     {
55         std::cout << "请确认图像文件名是否正确" << std::endl;
56         return;
57     }
58 
59     int num =img.channels();
60     cv::Mat* arrMatChannel = new cv::Mat[num];
61     cv::split(img, arrMatChannel);
62 
63 
64     for (int i = 0; i < num; i++)
65     {
66         std::string strCaption = std::string("Test2 channel ") + std::to_string(i);
67 
68         cv::imshow(strCaption, arrMatChannel[i]);
69     }
70 
71     cv::Mat mat0 = cv::Mat::zeros(img.rows, img.cols, CV_8UC1);
72     arrMatChannel[0] = mat0;//BGR
73     arrMatChannel[1] = mat0;//BGR
74     cv::Mat mat00R;
75     cv::merge(arrMatChannel,num, mat00R);
76     cv::imshow("Test2 00R", mat00R);
77 }
78 
79 int main()
80 {
81     cv::utils::logging::setLogLevel(cv::utils::logging::LOG_LEVEL_ERROR);
82     
83     Test1();
84     Test2();
85 
86     cv::waitKey(0);
87 
88     return 0;
89 }

 

================================================

查看效果

================================================

多于4通道无法用imshow查看,可以在image show里以数据的形式查看

 

标签:imshow,Mat,img,分离,合并,vctMatChannel,include,cv,通道
From: https://www.cnblogs.com/wlsandwho/p/18369737

相关文章

  • 第3篇 :git 首次创建项目上传,代码合并操作
    一.首次创建远程代码库,并上传自己修改的本地代码第1步:在自己电脑创建本地项目路径,在这个路径下执行初始化git:命令:gitinit第2步:改分支名称【如果远程仓库,主干的名称是main,而不是master,需要在本地将master改为main,如果主干已经是main则可忽略此步骤,这种情况只出现在gitlab代码......
  • 免费Excel工作表同类数据合并工具
       下载地址:https://pan.quark.cn/s/81b1aeb45e4c在Excel表格中,手动将多行同类数据合并为一行存在诸多困难和复杂的操作,容易出现错漏且难以保证数据合并的完全正确性,需要人工反复复核。作者因深受其苦,开发了一个具有特定功能的小工具。**重要亮点**-**手动合并数据的......
  • 树上合并 目前的总结
    启发式合并(set)元素少的set中的元素一一插入元素多的set中。时间两只\(\log\)。空间最坏为\(n\)这个级别(结点数)(这是在默认一个结点最多增加一个元素的情况下)。log数据结构时间也是两只\(\log\)。dsuontree好像[也叫“树上启发式合并”](??)。[一般](?)是重链剖分一样划分......
  • 部署Nginx负载均衡+动静分离的群集
    目录一、Nginx应用二、正向代理与反向代理1.1正向代理1.2反向代理三、负载均衡1.轮询(RoundRobin)2.最小连接数3.IP  hash:4.加权轮询5.最少事件算法6.一致性hash一、Nginx应用Nginx是一款非常优秀的HTTP服务器软件支持高达50000个并发连接数的响应拥有强......
  • 计算机毕业设计 小区运动中心预约管理系统 Java+SpringBoot+Vue 前后端分离 文档报告
    ......
  • ps通道实战
    目标把图片的数和草扣取出来,然后加上背景色 步骤一找到通道的蓝色 复制图层 2.crl+l打开色阶 3.画笔处理下白点的部分 4.ctrl+i反选选区 重点,选中不是创建选区,这时我们应该手工创建选区,按ctrl+点击蓝拷贝5.回到图层,给图层创建蒙版6.添加图层背景色添加蓝色......
  • springboot+vue前后端分离项目-项目搭建19-ElementUI图标+聊天室
    一、ElementUI图标按照官网这两步,注册所有图标,然后就能直接使用 1.安装后在vue/package.json里能看到包 2.注册所有图标 3.点击自动复制,直接就能使用 4.效果: ......
  • leetcode 21.合并两个有序链表
    leetcode21.合并两个有序链表题目描述:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。迭代法:思路:不断迭代,谁小指向谁publicListNodemergeTwoLists(ListNodelist1,ListNodelist2){if(list1==null){......
  • PDF 文件处理PDF合并和拆分工具PDF Merge PDF Splitter for Mac
    “PDFMergePDFSplitterforMac”是一款专门为Mac用户打造的出色PDF文件处理工具。它集合并与拆分PDF文件的核心功能于一体,能极大地方便用户对PDF文档的管理。      软件下载地址在合并功能上,它能迅速将多个PDF文件整合成一个,无论是工作报告、学习资......
  • 详解Xilinx FPGA高速串行收发器GTX/GTP(9)--TX/RX通道
    目录1、TX端的剩余模块1.1、TXPIPEControl1.2、TXGearbox1.3、PCIEBeacon1.4、SATAOOB1.5、PhaseAdjustFIFO1.6、Polarity1.7、PISO1.8、TXPre/PostEmp和10、TXDriver1.9、TXOOBandPCIE1.10、TXDriver1.11、TXPhaseInterpolatorController(包括12......