C# OpenCvSharp 通道分离

这篇具有很好参考价值的文章主要介绍了C# OpenCvSharp 通道分离。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

效果

项目

代码

下载 


效果

C# OpenCvSharp 通道分离,AI,C#,OpenCV,c#,开发语言,C#通道分离

C# OpenCvSharp 通道分离,AI,C#,OpenCV,c#,开发语言,C#通道分离

项目

C# OpenCvSharp 通道分离,AI,C#,OpenCV,c#,开发语言,C#通道分离

代码

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;
            }

            //BGR
            Mat[] 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
            {
                //彩色图

                //创建一个空通道0
                Mat 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;
        }
    }
}
 

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;
            }

            //BGR
            Mat[] 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
            {
                //彩色图

                //创建一个空通道0
                Mat 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下载文章来源地址https://www.toymoban.com/news/detail-700422.html

到了这里,关于C# OpenCvSharp 通道分离的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Opencv-C++笔记 (9) : opencv-多通道分离和合并

    在图像颜色模型中不同的分量存放在不同的通道中,如果我们只需要颜色模型的某一个分量,例如只需要处理RGB图像中的红色通道,可以将红色通道从三通道的数据中分离出来再进行处理,这种方式可以减少数据所占据的内存,加快程序的运行速度。同时,当我们分别处理完

    2024年02月09日
    浏览(51)
  • OpenCV4通道的分离split(),通道的合并merge(),通道的混合mixChannels()

    opencv中默认imread函数加载图像文件,加载进来的是三通道彩色图像,色彩空间是RGB色彩空间,通道顺序是BGR(蓝色、绿色、红色),对于三通道的图像OpenCV中提供了三个API函数用以实现通道分离split(),合并merge(),混合mixChannels(); RGB图像,在opencv的Mat中,像素数据,存储结构

    2024年02月12日
    浏览(48)
  • opencv+python(通道的分离与合并)笔记

    分割图像通道: 通过函数mv=split(img);mv返回的通道; RGB有3个通道;灰度图只有一个通道; 合并图像通道:cv2.merge((b,g,r)) 修改图像中某区域的颜色: img[10:100,10:100]=0 表示将图像img的行索引从10到100(不包括100)和列索引从10到100(不包括100)的区域像素值设置为0。这里的1

    2024年04月10日
    浏览(36)
  • Python使用OpenCV库对彩色图像进行通道分离

    目录 1、解释说明: 2、使用示例: 3、注意事项: 在Python中,我们可以使用OpenCV库对彩色图像进行通道分离。通道分离是将彩色图像的每个像素分解为三个通道(红、绿、蓝)的过程。这样,我们可以分别处理和分析每个通道的信息。通道分离在图像处理中有很多应用,例如

    2024年02月12日
    浏览(41)
  • C#使用OpenCv(OpenCVSharp)图像全局二值化处理实例

    本文实例演示C#语言中如何使用OpenCv(OpenCVSharp)对图像进行全局二值化处理。 目录 图像二值化原理 函数原型 参数说明 实例 效果

    2024年02月13日
    浏览(50)
  • C#使用OpenCv(OpenCVSharp)图像局部二值化处理实例

      本文实例演示C#语言中如何使用OpenCv(OpenCVSharp)对图像进行局部二值化处理。 目录 图像二值化原理 局部二值化 自适应阈值 实例 效果

    2024年02月13日
    浏览(55)
  • C#基于OpenCv(OpenCvSharp) 的 fftshift, ifftshift 函数的实现

    本文实现基于 OpenCv ( OpenCvSharp ) 的 fftshift, ifftshift 函数。 fftshift 函数将信号频谱的零频分量移动到数组中心, 本质是分别对调一三象限数据。 ifftshift完成相反的操作,本质是二四象限的数据块。 OpenCV中没有这两个函数如果使用需要自己实现。 实现代码如下:

    2024年02月14日
    浏览(37)
  • OpenCvSharp (C# OpenCV) 实现扫描文本矫正应用与实现详解(附源码)

    导  读     本文主要介绍使用OpenCV对扫描文本矫正的应用实例及详细实现步骤。 背景介绍     在使用打印机或扫描仪扫描文档时,由于摆放位置差异难免造成扫描文档的倾斜。本文将使用OpenCV将倾斜的文档矫正水平并去除黑边。   实现步骤     本文只针对包含大部分文

    2024年02月16日
    浏览(56)
  • C#使用OpenCv(OpenCVSharp)图像直方图均衡化处理实例

    本文实例演示C#语言中如何使用OpenCv(OpenCVSharp)对图像进行直方图均衡化处理。 直方图均衡化原理 直方图均衡化(Histogram Equalization)是一种常用的图像增强技术,用于改善图像的对比度和亮度分布。它通过重新分配图像灰度级的像素值,使得图像的直方图在灰度范围内更加

    2024年02月07日
    浏览(96)
  • C#使用OpenCv(OpenCVSharp)图像处理实例:亮度、对比度、灰度

    本文实例演示C#语言中如何使用OpenCv(OpenCVSharp)对图像进行亮度、对比度、灰度处理。 目录 亮度和对比度原理 灰度 实例 图像亮度通俗理解便是图像的明暗程度,数字图像 f(x,y) = i(x,y) r(x, y) ,如果灰度值在[0,255]之间,则 f 值越接近0亮度越低,f 值越接近255亮度越

    2024年02月13日
    浏览(76)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包