C# OpenCvSharp 通道分离
效果


项目

代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using OpenCvSharp;
using OpenCvSharp.Extensions;namespace OpenCvSharp_通道分离
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private string fileFilter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";Bitmap bmp;String imgPath = "";Mat mat;private void button2_Click(object sender, EventArgs e){OpenFileDialog ofd = new OpenFileDialog();ofd.Filter = fileFilter;if (ofd.ShowDialog() != DialogResult.OK) return;imgPath = ofd.FileName;bmp = new Bitmap(imgPath);mat = new Mat(imgPath, ImreadModes.AnyColor);pictureBox1.Image = bmp;}private void button1_Click(object sender, EventArgs e){if (pictureBox1.Image == null){return;}//BGRMat[] mats = Cv2.Split(mat);if (radioButton1.Checked){//灰度图pictureBox2.Image = BitmapConverter.ToBitmap(mats[0]);pictureBox3.Image = BitmapConverter.ToBitmap(mats[1]);pictureBox4.Image = BitmapConverter.ToBitmap(mats[2]);//Window b = new Window("B", WindowMode.Normal);//Window g = new Window("G", WindowMode.Normal);//Window r = new Window("R", WindowMode.Normal);//b.ShowImage(mats[0]);//g.ShowImage(mats[1]);//r.ShowImage(mats[2]);}else{//彩色图//创建一个空通道0Mat zero = new Mat(mats[0].Size(), MatType.CV_8UC1, new Scalar(0));Mat bsum = new Mat();Mat gsum = new Mat();Mat rsum = new Mat();Cv2.Merge(new Mat[] { mats[0], zero, zero }, bsum);//(b,0,0)图像Cv2.Merge(new Mat[] { zero, mats[1], zero }, gsum);//(0,g,0)图像Cv2.Merge(new Mat[] { zero, zero, mats[2] }, rsum);//(0,0,r)图像pictureBox2.Image = BitmapConverter.ToBitmap(bsum);pictureBox3.Image = BitmapConverter.ToBitmap(gsum);pictureBox4.Image = BitmapConverter.ToBitmap(rsum);}}private void Form1_Load(object sender, EventArgs e){radioButton1.Checked = true;}}
}
Demo下载
相关文章:
C# OpenCvSharp 通道分离
效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using OpenCvSharp; using OpenCvSharp.Extensions;namespac…...
oracle 自定义存储过程(非常简单明了)
语法说明 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN %TYPE, 参数2 IN %TYPE, 参数3 OUT %TYPE) IS 变量1 %TYPE; 变量2 %TYPE; BEGIN存储过程执行语句块 END 存储过程名字;举例说明 1.举一个简单的例子 定义存储过程 easyProcedure 入参为 两个数 出参为 他们的…...
layui--记录
layui 行点击事件:点了没反应? //监听行工具事件layui.table.on(tool(demo), function (obj) {//alert(222) });原因:检查下id与lay-filter是否一致;id与lay-filter必须一致。 <table id"demo" lay-filter"dem…...
【校招VIP】测试技术考点之单元测试集成测试
考点介绍: 单元测试,集成测试的区别是:方式不同、粒度不同、内容不同。单元测试用用于验证编码单元的正确性。集成测试用于验证详细设计。体现了测试由小到大、又内至外、循序渐进的测试过程和分而治之的思想。 测试技术考点之单元测试&集成测试-相…...
【Redis专题】Redis核心数据结构实战与高性能原理解析
目录 前言课程内容一、redis数据类型1.1 字符串(string)类型:比较简单的一种使用存储模型常用命令:(截取自【菜鸟教程】)部分演示应用场景 1.2 哈希(hash)类型:同类数据归…...
常见的几种排序算法
目录 一、插入排序 1、直接插入排序 1.1、排序方法 1.2、图解分析 1.3、代码实现 2、希尔排序 2.1、排序方法 2.2、图解分析 2.3、代码实现 二、选择排序 1、直接选择排序 1.1、排序方法 1.2、图解分析 1.3、代码实现 2、堆排序 2.1、排序方法 2.2、图解分析 …...
动态贴纸、美颜SDK与AR:创造独特的互动体验
目前,动态贴纸、美颜SDK、增强现实(AR)等技术是比较热门的话题,它们所结合的新兴玩法更是收到大家推崇,正潜移默化的改变我们与数字世界互动的方式。 一、动态贴纸:个性化互动的开始 动态贴纸,…...
〔021〕Stable Diffusion 之 提示词反推、自动补全、中文输入 篇
✨ 目录 🎈 反推提示词 / Tagger🎈 反推提示词 Tagger 使用🎈 英文提示词自动补全 / Booru tag🎈 英文提示词自动补全 Booru tag 使用🎈 中文提示词自动补全 / tagcomplete🎈 中文提示词自动补全 tagcomple…...
如何实现响应式布局
要实现响应式布局,您可以采用以下方法: 视口设置: 在HTML的<head>部分中使用meta标签设置视口: <meta name"viewport" content"widthdevice-width, initial-scale1.0">使用百分比: 使…...
HTML <tr> 标签
实例 一个简单的 HTML 表格,包含两行两列: <table border="1"><tr><th>Month</th><th>Savings</th></tr><tr><td>January</td><td>$100</td></tr> </table>定义和用法 &l…...
点云从入门到精通技术详解100篇-点云多尺度分类网络
目录 前言 研究现状与发展趋势 国内外研究现状 点云处理应用研究现状...
电脑怎么设置定时关机,2个简单的操作
电脑作为现代生活中不可或缺的工具,我们通常会在工作或娱乐过程中使用它。但有时候,我们可能需要在一段时间后自动关机,例如在下载完成后或在睡觉前。那么电脑怎么设置定时关机呢?为了满足这种需求,电脑提供了多种定时…...
Uboot指令与烧录
目录 1 NAND Flash: 1)地址空间说明 2)烧写u-boot 3)烧写内核 4)烧写文件系统 5)设置启动参数 2 SPI Flash: 1)地址空间说明 2)烧写u-boot 3)烧写内…...
Visual Studio中使用预编译头文件
预编译头文件(Precompiled Header,PCH)是一种C/C编译优化技术,用于提高大型项目的编译速度。PCH 文件包含了常用的头文件的预编译结果,它可以在编译其他源文件之前被加载到内存中,从而减少了重复的头文件解…...
C语言:选择+编程(每日一练Day15)
目录 选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:寻找奇数 思路一: 题二:寻找峰值 思路一: 本人实力有限可能对一些地方解…...
确定Mac\Linux系统的架构类型是 x86-64(amd64),还是 arm64 架构
我们在下载软件或镜像时会有很多版本,那需要根据我们的系统架构选择正确的软件或镜像版本。 要确定你的系统使用的是 x86-64(amd64) 还是 arm64 架构,可以使用以下方法之一: 使用 uname 命令: 打开终端&am…...
Python脚本
update_format.py 批量转视频格式,超级慢,没什么卵用 import os import asyncio import subprocess import concurrent.futures import tracemalloctracemalloc.start()# 创建日志文件 log_file open(conversion_log.txt, w)async def convert_mkv_t…...
Kotlin的遍历方法
for循环 在下面代码中1…10表示的是1到10,两边都是闭包,输出12345678910 for (i in 1..10) println(i)加上花括号也支持 for (i: Int in 1..10) {println(i)}另外,当对整数进行for循环时,Kotlin还提供了一个step函数来定义迭代的…...
AskIt: Unified Programming Interface for Programming with Large Language Models
本文是LLM系列文章,针对《AskIt: Unified Programming Interface for Programming with Large Language Models》的翻译。 AskIt:用于大型语言模型编程的统一编程接口 摘要1 引言2 动机例子3 设计与实现4 实验评估5 相关工作6 结论 摘要 在不断发展的软…...
【wireshark抓取数据包-PGSQL协议】
测试查看PGSQL协议的网络流量数据明细 1)捕获过滤的条件设置,tcp.port5432(数据库的端口) 2)上面是wireshark的主窗口,分三大主块:Packlist List(数据包列表)…...
STM32F103C8T6的读保护功能,到底怎么用才安全?一个真实案例带你避坑
STM32读保护功能实战指南:从原理到避坑全解析 记得去年接手一个工业控制器项目时,团队里有位新人工程师在调试STM32F103C8T6时不小心触发了读保护,导致整批样品芯片集体"罢工"。那天的紧急加班让我深刻意识到——读保护功能就像一把…...
3分钟掌握OpenSpeedy:完全免费的开源游戏变速工具终极指南
3分钟掌握OpenSpeedy:完全免费的开源游戏变速工具终极指南 【免费下载链接】OpenSpeedy 🎮 An open-source game speed modifier. 项目地址: https://gitcode.com/gh_mirrors/op/OpenSpeedy OpenSpeedy是一款专为Windows平台设计的开源游戏变速工…...
Picocli错误处理终极指南:7个技巧构建健壮命令行应用
Picocli错误处理终极指南:7个技巧构建健壮命令行应用 【免费下载链接】picocli Picocli is a modern framework for building powerful, user-friendly, GraalVM-enabled command line apps with ease. It supports colors, autocompletion, subcommands, and more.…...
万象熔炉 | Anything XL多风格尝试:动漫/写实/赛博朋克提示词模板库
万象熔炉 | Anything XL多风格尝试:动漫/写实/赛博朋克提示词模板库 1. 工具简介 万象熔炉 | Anything XL 是一款基于 Stable Diffusion XL 框架开发的本地图像生成工具。它最大的特点是支持直接加载 safetensors 单文件权重,无需复杂的配置和权重拆分…...
Intv_AI_MK11后端开发进阶:高并发场景下的系统设计与性能调优
Intv_AI_MK11后端开发进阶:高并发场景下的系统设计与性能调优 1. 高并发系统的核心挑战 当系统面临每秒数万甚至数十万的请求时,传统的架构设计往往会暴露出各种性能瓶颈。我们通过Intv_AI_MK11分析发现,高并发场景下最常见的三大挑战是&am…...
JavaScript中类的装饰器提案在属性与方法上的应用
JavaScript类装饰器处于TC39 Stage 3提案阶段,未标准化但Babel/TS已实验支持;方法装饰器接收target、propertyKey、descriptor,可增强行为;属性装饰器无统一签名,TS常用Reflect元数据;装饰器静态执行、不可…...
量子密钥分发系统的工程实现(四):后处理流程与FPGA硬件加速剖析
1. QKD后处理流程的核心挑战 量子密钥分发(QKD)系统的后处理流程就像是一场精密的"密钥提纯"手术。想象一下Alice和Bob通过量子信道传递的原始密钥,就像刚从矿场挖出的原石——含有大量杂质(误码)、存在形状…...
RK3568实战:用QEMU在x86电脑上模拟构建和调试ARM64 Ubuntu 22.04根文件系统
RK3568开发实战:基于QEMU的ARM64根文件系统高效构建与调试指南 引言 在嵌入式Linux开发领域,RK3568作为一款性能优异的四核Cortex-A55处理器,正被广泛应用于各类智能硬件设备。传统开发流程中,开发者往往需要在物理开发板上反复刷…...
模电学习难点解析与实战突破指南
1. 为什么模电让人如此头疼?作为一名在电子行业摸爬滚打多年的工程师,我完全理解大家学习模拟电路时的痛苦。记得我大学时第一次接触模电课,老师讲了三遍共射放大电路,我愣是没听懂。直到后来在实际项目中反复调试电路,…...
18.children 这个 props 的意义何在?该怎样正确使用?
在 React 里,children 是一个非常特殊、非常常用的 prop, 它专门用来接收:写在组件标签中间的那一部分内容。你可以把它理解为:组件外层负责搭“外壳”,children 负责装进这个壳里的“内容物”。一、children 到底是什…...
