Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C# EmguCV图像处理实例

C# EmguCV图像处理实例

作者头像
zls365
发布于 2020-08-19 02:34:35
发布于 2020-08-19 02:34:35
2K00
代码可运行
举报
文章被收录于专栏:CSharp编程大全CSharp编程大全
运行总次数:0
代码可运行

1. 本例中,我们需要导入:Emgu.CV.UI.dll、Emgu.CV.World.dll

2. 然后在程序中导入命名空间:using Emgu.CV; using System.Diagnostics;

3. 然后拖3个ImageBox到主窗体,拖3个TextBox和4个Button到主窗体,如图所示:

功能说明:点击button1添加图片并显示到ImageBox1中;点击button2将ImageBox1中的图片去色,并将灰度图显示到ImageBox2中;点击button3直接载入新的图片并去色,然后显示到ImageBox3中;点击button4清除所有的图片和文本框中的内容。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Emgu.CV;

namespace WindowsFormsApplication8
{
public partial class Form1 : Form
    {
        Mat img1 = null;
        Mat img2 = null;
        Mat img3 = null;
        Stopwatch sw = new Stopwatch();
public Form1()
        {
            InitializeComponent();
        }

private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog lvse = new OpenFileDialog();
            lvse.Title = "选择图片";
            lvse.InitialDirectory = "";
            lvse.Filter = "图片文件|*.bmp;*.jpg;*.jpeg;*.gif;*.png";
            lvse.FilterIndex = 1;

if (lvse.ShowDialog() == DialogResult.OK)
            {
                textBox1.Text = null;
                
                sw.Restart();

                img1 = CvInvoke.Imread(lvse.FileName, Emgu.CV.CvEnum.LoadImageType.AnyColor);

                imageBox1.Width = img1.Width / 2;
                imageBox1.Height = img1.Height / 2;
                imageBox1.Image = img1;
                
                sw.Stop();
                textBox1.Text = sw.ElapsedMilliseconds.ToString();
            }

        }

private void button2_Click(object sender, EventArgs e)
        {
if (img1 != null)
            {
                img2 = new Mat(img1.Rows, img1.Cols, Emgu.CV.CvEnum.DepthType.Cv8U, 1);
                textBox2.Text = null;
                sw.Reset();
                sw.Start();

                CvInvoke.CvtColor(img1, img2, Emgu.CV.CvEnum.ColorConversion.Bgr2Gray);
                imageBox2.Width = img2.Width / 2;
                imageBox2.Height = img2.Height / 2;
                imageBox2.Image = img2;

                sw.Stop();
                textBox2.Text = sw.ElapsedMilliseconds.ToString();
            }
        }

private void button3_Click(object sender, EventArgs e)
        {
            textBox3.Text = null;
            OpenFileDialog lvse = new OpenFileDialog();
            lvse.Title = "选择图片";
            lvse.InitialDirectory = "";
            lvse.Filter = "图片文件|*.bmp;*.jpg;*.jpeg;*.gif;*.png";
            lvse.FilterIndex = 1;
if (lvse.ShowDialog() == DialogResult.OK)
            {
                sw.Reset();
                sw.Start();

                img3 = CvInvoke.Imread(lvse.FileName, Emgu.CV.CvEnum.LoadImageType.Grayscale);
                imageBox3.Width = img3.Width / 2;
                imageBox3.Height = img3.Height / 2;
                imageBox3.Image = img3;

                sw.Stop();
                textBox3.Text = sw.ElapsedMilliseconds.ToString();
            }
        }

private void button4_Click(object sender, EventArgs e)
        {
            img1 = null;
            img2 = null;
            img3 = null;
            imageBox1.Image = null;
            imageBox2.Image = null;
            imageBox3.Image = null;
            textBox1.Text = null;
            textBox2.Text = null;
            textBox3.Text = null;
        }
    }
}

运行结果如下:

其它:

创建图像并显示

Image<Bgr, byte> image = new Image<Bgr, byte>(320, 240, new Bgr(0, 0, 255));

//创建一张320*240尺寸颜色为红色的图像。

imageBox1.Image = image;//在ImageBox1控件中显示所创建好的图像。

加载当前环境目录下图片并显示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 // MessageBox.Show(Environment.CurrentDirectory.ToString());
             Mat imgscr = CvInvoke.Imread(Environment.CurrentDirectory+"\\1.jpg");//读取图像
            // CvInvoke.Imshow("img", imgscr);//显示图像
              imageBox2.Image = imgscr;//在ImageBox2控件中显示所创建好的图像。
             CvInvoke.WaitKey(0);//按键等待
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CSharp编程大全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
emgucv 图片加载、类型转换
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Emgu.CV; using Emgu.CV.CvEnum; usin
zls365
2020/08/19
1.1K0
emgucv 图片加载、类型转换
C# 使用OpenCV在一张图片里寻找人脸
例程中用到一个库叫做emgucv,是opencv\的net封装 编译打包好的稳定版,在这:https://sourceforge.net/projects/emgucv/files/emgucv/ 如果要最新代码,在这里获取:https://github.com/emgucv/emgucv
zls365
2020/08/19
3K0
C# 使用OpenCV在一张图片里寻找人脸
yolov3和yolov4检测效果对比
测试10张图片,计算平均耗时: yolo_cpp_dll.dll 自己编译生成的 yolov3 18ms 100% yolov3-tiny 5ms 检出率60% 比较节省gup资源 yolov4 35ms 检出率90%
zls365
2020/08/19
1.5K0
yolov3和yolov4检测效果对比
Emgucv视频操作--进阶1
实现功能: 播放视频 提取每一帧图片并保存 显示视频播放的时间 videowrite 视频保存的方法还未调试成功,等待后续再继续研究! //---------------------------------------------------------------------------- // Copyright (C) 2004-2019 by EMGU Corporation. All rights reserved. //----------------------------
zls365
2020/08/19
1.5K0
Emgucv视频操作--进阶1
文件无法保存(文件夹已损坏无法读取怎么办)
要使用EmguCV,首先需要去官网下载安装包(除了下载安装包,还有其他几种方式)。安装完成后,得配置环境变量。这里不再赘述。网上的教程很多。我这里分享一个官网的下载链接:https://sourceforge.net/projects/emgucv/files/emgucv/
全栈程序员站长
2022/07/25
1.9K0
文件无法保存(文件夹已损坏无法读取怎么办)
C#基于yolov3的行人检测
yolo_cpp_dll中的yolo_v2_class.cpp需要修改下构造函数detect_image
zls365
2020/08/19
1.3K0
C#基于yolov3的行人检测
C#图像插值算法
过Image<TColor,TDepth> method 来实现,这边主要讲解前者。
zls365
2020/08/19
1.7K0
C#图像插值算法
【Emgu】一起学EmguCV(二)Image和Matrix的使用
  本文链接:https://www.cnblogs.com/bomo/archive/2013/03/28/2986573.html
zls365
2020/08/19
2K0
【Emgu】一起学EmguCV(二)Image和Matrix的使用
Emgucv视频处理--进阶篇
链接:https://zhidao.baidu.com/question/559571801.html
zls365
2020/08/19
1.2K0
Emgucv视频处理--进阶篇
C# 图像模板匹配并标注
模板匹配是图像处理中最基本、最常用的匹配方法。目前我司用hacon去做的,还进行了二次封装,可以设置图片的旋转角度等信息,这个设计公司机密,这里我就用opencv(NET封装版叫emgucv)去实现这个功能。
用户9127601
2022/01/13
1.8K0
C# 图像模板匹配并标注
EmguCV录制视频
最后录制的视频会储存在项目所在文件夹的bin目录下的debug或release文件夹中。 最终效果:
全栈程序员站长
2022/07/23
1.9K0
EmguCV录制视频
OpenCV、EmguCV和OpenCvSharp指针访问图像像素值耗时测评(附源码)
EmguCV和OpenCvSharp都是OpenCV在.Net下的封装,常常会听到有人说EmguCV或OpenCvSharp同样的函数比OpenCV函数运行速度慢,到底是不是真的?博主暂时也没有去一一验证,本文主要对比下三者用指针方法读取像素的速度、耗时情况。
Color Space
2022/09/26
3.1K0
C# 探测器测试系统
运行效果: 重要知识点: 控件循环遍历操控; 队列数组的应用: private Queue<double>[] dataQueue = new Queue<double>[8]; //把
zls365
2020/08/19
1.5K0
C# 探测器测试系统
EmguCV学习——简单使用
公司是视觉方面的业务,我又不会c++(好想会啊,正在学习中)。由于各种需求,自己觉得对c++不是特别感冒,所以选用了net下的opencv的封装EmguCV。python也有对应的opencv的库。无奈我python还处于入门阶段。
叁金
2018/09/04
2.6K0
directshow、 Emgucv入门
本示例主要测试了directshow、Emgucv的视频流采集功能,其中Emgucv还实现了人脸的识别。示例源码下载 一、directshow的介绍 实现原理:directshow可以将摄像头的数据流以事件的方式实时传递给程序,程序在此事件中拿到流后可以保存为图片(流可以经过多个filterGraph2对象)。directshow提供将数据绑定到picturebox控件上。以下为打开一个摄像头的步骤: 1. 引入directshow.net控件 此控件可以在网上搜索,即好下载,名称为DirectShowLi
sam dragon
2018/01/17
1.7K0
directshow、 Emgucv入门
EmguCV学习——简单算法 差分与高斯
公司项目需要检测运动物体,我对opencv也没啥研究,google了好久看了好多方法,最简单的就是差分与高斯背景建模了。
叁金
2018/09/04
9410
EmguCV学习——简单算法 差分与高斯
EmguCV学习——视频与图片互转
其实视频转图片在上篇文章中已经有些眉目了,其实就是按帧读取视频,然后把帧保存就ok。然后自己再加个进度条美化一下。。。这代码简单易懂,还是直接上代码吧。
叁金
2018/09/04
1.3K0
C#使用OpenCV剪切图像中的圆形和矩形
首先创建一个Wpf项目——WpfOpenCV,这里版本使用Framework4.7.2。
Kiba518
2021/03/11
4.1K2
C#使用OpenCV剪切图像中的圆形和矩形
EmguCv模板匹配[通俗易懂]
模板匹配是一种最原始、最基本的模式识别方法,研究某一特定对象物的图案位于图像的什么地方,进而识别对象物,这就是一个匹配问题。它是图像处理中最基本、最常用的匹配方法。模板匹配具有自身的局限性,主要表现在它只能进行平行移动,若原图像中的匹配目标发生旋转或大小变化,该算法无效。
全栈程序员站长
2022/07/23
1.2K0
EmguCv模板匹配[通俗易懂]
C#使用OpenCV剪切图片中的人物头像
首先创建一个Wpf项目——OpenCV_Face_Wpf,这里版本使用Framework4.7.2。
Kiba518
2021/03/02
1.4K0
C#使用OpenCV剪切图片中的人物头像
相关推荐
emgucv 图片加载、类型转换
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档