二、显示图片、提取边缘特征并保存(OpenCvSharp)

这篇具有很好参考价值的文章主要介绍了二、显示图片、提取边缘特征并保存(OpenCvSharp)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实现功能:
1,打开照片,并显示
2,对选择的照片进行Canny边缘检测
3,保存边缘检测之后的结果

一、布局

打开在视图下打开工具箱
二、显示图片、提取边缘特征并保存(OpenCvSharp),OpenCvSharp,c#,opencv,开发语言
选择一个PictureBox,仨Button
二、显示图片、提取边缘特征并保存(OpenCvSharp),OpenCvSharp,c#,opencv,开发语言

二、显示图片、提取边缘特征并保存(OpenCvSharp),OpenCvSharp,c#,opencv,开发语言
对Button改个名字
二、显示图片、提取边缘特征并保存(OpenCvSharp),OpenCvSharp,c#,opencv,开发语言
仨Button,分别对应三个功能的实现
最终的页面如下所示
二、显示图片、提取边缘特征并保存(OpenCvSharp),OpenCvSharp,c#,opencv,开发语言

二、引入命名空间

using System;
using System.Drawing;
using System.Windows.Forms;

using OpenCvSharp;
using OpenCvSharp.Extensions;

二、显示图片、提取边缘特征并保存(OpenCvSharp),OpenCvSharp,c#,opencv,开发语言
要有这三个哈,没有就去浏览里面搜索下载安装就行
二、显示图片、提取边缘特征并保存(OpenCvSharp),OpenCvSharp,c#,opencv,开发语言

三、选择照片功能

定义全局变量picture用于存放读取的图片的位置

OpenFileDialog file = new OpenFileDialog();
new一个OpenFileDialog 类对象file,用于打开选择图片
OpenFileDialog 类官网API

if (file.FileName != string.Empty)
此时file.FileName就是图片的路径,是一个字符串数据

pictureBox1.Load(file.FileName);
pictureBox1就是布局里面的PictureBox控件名称
参数是图片的路径,这里传入用户选择的图片路径file.FileName
此时就可以将用户选择的照片显示在PictureBox控件上

string picture = ""; // 全局变量存放读取图片的路径
private void button1_Click(object sender, EventArgs e)
{
    OpenFileDialog file = new OpenFileDialog();
    file.InitialDirectory = ".";
    file.Filter = "所有文件(*.*)|*.*";
    file.ShowDialog();
    if (file.FileName != string.Empty)
    {
        try
        {
        	picture = file.FileName;
            this.pictureBox1.Load(file.FileName);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }  
}

四、Canny边缘检测功能

OpenCV处理的图片都是Mat形式
Mat img1 = new Mat(picture, ImreadModes.Color);
读取用户选择的图片
参数一:图片的路径,picture
参数二:读取图片的形式,ImreadModes.Color三颜色通道的彩色图

Mat gray = new Mat();存放处理图片之后的灰度图
Mat canny = new Mat();存放Canny边缘检测之后的结果图片

Cv2.CvtColor(img1,gray, ColorConversionCodes.RGB2GRAY);
img1转换为灰度图,输出结果为gray
参数一:输入图像,img1
参数二:输出图像,gray
参数三:转换的操作,ColorConversionCodes.BGR2GRAY,BGR转灰度图

Cv2.Canny(gray, canny, 100, 200);
gray图像进行Canny边缘检测,输出结果为canny,minVal 为100,maxVal 为200
当然Canny算子还有其他参数,读者可自行拓展学习
参数一:输入图像,gray
参数二:输出图像,canny
参数三:第一个阈值,100
参数四:第二个阈值,200

Bitmap bitmap = canny.ToBitmap();
graycanny都是Mat类型的数据,要想在PictureBox控件上展示,必须转换为Bitmap类型数据

pictureBox1.Image = bitmap;
此时bitmapBitmap类型数据,可以进行在控件上展示

private void button2_Click(object sender, EventArgs e)
{
    Mat img1 = new Mat(picture, ImreadModes.Color);
    Mat gray = new Mat();
    Mat canny = new Mat();

    Cv2.CvtColor(img1,gray, ColorConversionCodes.BGR2GRAY);
    Cv2.Canny(gray, canny, 100, 200);
    
    Bitmap bitmap = canny.ToBitmap();
    pictureBox1.Image = bitmap;
}

五、保存图片功能

SaveFileDialog save = new SaveFileDialog();
new一个SaveFileDialog 类对象save ,用于选择保存图片的位置
SaveFileDialog 类官网API

pictureBox1.Image.Save(save.FileName);
将PictureBox控件显示的通过Canny算子进行边缘检测之后的照片结果进行保存

private void button3_Click(object sender, EventArgs e)
{
    SaveFileDialog save = new SaveFileDialog();
    save.InitialDirectory = ".";
    save.Filter = "所有文件(*.*)|*.*";
    save.ShowDialog();
    if(save.FileName != string.Empty)
    {
        try
        {
            this.pictureBox1.Image.Save(save.FileName);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
     }
}

六、完整代码

复制的时候记得考虑实际的namespace
namespace opencv_test1跟你的项目名称一致哈

using System;
using System.Drawing;
using System.Windows.Forms;

using OpenCvSharp;
using OpenCvSharp.Extensions;

namespace opencv_test1
{
   
    public partial class Form1 : Form
    {
       
        string picture = "";

        public Form1()
        {
            InitializeComponent();          
        }

        private void Form1_Load(object sender, EventArgs e)
        {
           
        }
       
        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog file = new OpenFileDialog();
            file.InitialDirectory = ".";
            file.Filter = "所有文件(*.*)|*.*";
            file.ShowDialog();
            if (file.FileName != string.Empty)
            {
                try
                {
                    picture = file.FileName;
                    this.pictureBox1.Load(picture);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }  
        }


        private void button2_Click(object sender, EventArgs e)
        {
            Mat img1 = new Mat(picture, ImreadModes.Color);
            Mat gray = new Mat();
            Mat canny = new Mat();

            Cv2.CvtColor(img1,gray, ColorConversionCodes.BGR2GRAY);
            Cv2.Canny(gray, canny, 100, 200);
            
            Bitmap bitmap = canny.ToBitmap();
            pictureBox1.Image = bitmap;
        }


        private void button3_Click(object sender, EventArgs e)
        {
            SaveFileDialog save = new SaveFileDialog();
            save.InitialDirectory = ".";
            save.Filter = "所有文件(*.*)|*.*";
            save.ShowDialog();
            if (save.FileName != string.Empty)
            {
                try
                {
                    this.pictureBox1.Image.Save(save.FileName);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
    }
}

七、效果展示

运行效果
二、显示图片、提取边缘特征并保存(OpenCvSharp),OpenCvSharp,c#,opencv,开发语言
选择照片
二、显示图片、提取边缘特征并保存(OpenCvSharp),OpenCvSharp,c#,opencv,开发语言
二、显示图片、提取边缘特征并保存(OpenCvSharp),OpenCvSharp,c#,opencv,开发语言
Canny边缘检测
二、显示图片、提取边缘特征并保存(OpenCvSharp),OpenCvSharp,c#,opencv,开发语言
保存照片
二、显示图片、提取边缘特征并保存(OpenCvSharp),OpenCvSharp,c#,opencv,开发语言
保存效果
二、显示图片、提取边缘特征并保存(OpenCvSharp),OpenCvSharp,c#,opencv,开发语言文章来源地址https://www.toymoban.com/news/detail-852387.html

到了这里,关于二、显示图片、提取边缘特征并保存(OpenCvSharp)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 学习opencv.js之基本使用方法(读取,显示,灰度化,边缘检测,特征值点检测)

    OpenCV.js 是 OpenCV(Open Source Computer Vision Library)的 JavaScript 版本。OpenCV 是一个广泛使用的计算机视觉和图像处理库,提供了一系列功能强大的算法和工具,用于处理图像、视频、特征提取、对象识别等计算机视觉任务。 OpenCV.js 是将 OpenCV 库编译为 JavaScript 的版本,使得开发者

    2024年02月16日
    浏览(30)
  • OpenCV:创建窗口,图片显示和保存

    目录 cv2.waitKey() 窗口创建:cv2.namedWindow() 窗口大小调整:cv2.resizeWindow() 窗口显示:cv2.imshow() 关闭窗口:cv2.destroyAllWindows() 图片读取:cv2.imread() 图片保存:cv2.imwrite() 代码示例 waitKey()的基本逻辑:他会在一定时间内等待接收键盘的一个值; 返回值 为键盘按键的ASCII值; dela

    2024年01月19日
    浏览(76)
  • OpenCv案例(九): 基于OpenCvSharp图像分割提取目标区域和定位

    以下原图中,物体连靠在一起,目的是将其分割开,再提取轮廓和定位 原图:   最终效果: 麻烦的地方是,分割开右下角部分,两个连在一起的目标物体,下图所示:  基本方法:BoxFilter滤波、二值化、轮廓提取,凸包检测,图像的矩 代码如下: 灰度图像后图像二值化:

    2024年02月11日
    浏览(27)
  • 计算机视觉:通过边缘检测探究卷积的特征提取功能

    在前面的课程中,我们学习了卷积核的运算,同时我们也学习了卷积核的含义,我们可以将卷积核理解为特征提取器,也就是说一个卷积核就是一个特征提取器,很多人对这种说法不了解,下面我们就通过一个边缘检测的例子来看一下卷积核是如何进行边缘特征的提取的。

    2024年02月13日
    浏览(29)
  • 【计算机视觉】图像分割与特征提取——基于Log、Canny的边缘检测

    个人简介:  📦个人主页:赵四司机 🏆学习方向:JAVA后端开发  ⏰往期文章:SpringBoot项目整合微信支付 🔔博主推荐网站:牛客网 刷题|面试|找工作神器 📣种一棵树最好的时间是十年前,其次是现在! 💖喜欢的话麻烦点点关注喔,你们的支持是我的最大动力。 前言:

    2024年02月03日
    浏览(25)
  • Opencv图像特征点提取(

            目录 特征点分类 1 ORB ①特征点检测 ②计算特征描述 2 SIFT 1 SIFT特征检测的步骤 ①.在DOG尺度空间中获取极值点,即关键点。 ②.特征点方向估计 ③生成特征描述 ④.代码实现 3.SURF ①.SURF的介绍 ②.SURF算法步骤 ③. SIFT与SURF效果比较 ④代码实现 4 FAST角点检测且阈值可

    2024年02月14日
    浏览(32)
  • opencv特征提取、梯度计算

                                             

    2024年02月11日
    浏览(24)
  • OpenCV图像特征提取学习五,HOG特征检测算法

    一、HOG向梯度直方图概述   向梯度直方图(Histogram of Oriented Gradient, HOG)特征是基于对稠密网格中归一化的局部方向梯度直方图的计算。此方法的基本观点是:局部目标的外表和形状可以被局部梯度或边缘方向的分布很好的描述,即使我们不知道对应的梯度和边缘的位置。在

    2024年02月04日
    浏览(33)
  • 如何在OpenCV中实现图像的边缘检测和轮廓提取?opencv教程

    在OpenCV中,可以使用边缘检测算法和轮廓提取函数来实现图像的边缘检测和轮廓提取。以下是一种常用的方法: 边缘检测: 在OpenCV中,常用的边缘检测算法包括Canny边缘检测和Sobel算子。 Canny边缘检测: Canny边缘检测是一种广泛使用的边缘检测算法,它能够有效地检测出图像

    2024年02月15日
    浏览(26)
  • Lesson4-1:OpenCV图像特征提取与描述---角点特征

    学习目标 理解图像的特征 知道图像的角点 1 图像的特征 大多数人都玩过拼图游戏。首先拿到完整图像的碎片,然后把这些碎片以正确的方式排列起来从而重建这幅图像。如果把拼图游戏的原理写成计算机程序,那计算机就也会玩拼图游戏了。 在拼图时,我们要寻找一些唯一

    2024年02月10日
    浏览(28)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包