c# 分辨率测试卡检测

检测原理

1、首先导入图片(里面会进行一次默认的按照显示比例进行裁剪 裁剪后为img2)
2、点击缩放按钮,可以进行一次按照固定尺寸进行裁剪
3、对img2(裁剪后的图片)进行灰度化 二值化 形态学 目的是得到一个合在一起的框,然后就可以对其进行轮廓寻找
4、最后将找到的轮廓 在灰度图中框出来 并计算 这个框选区域的最大灰度值和最小灰度值。就可以得到最终结论了。并将计算值显示在img2上。
5、其中我们需要调节的比如:

  • 二值化的阈值,小于阈值的填充为白(设定值),大于的就置0。也就是使白的变黑,黑的变白。目的是为后面的腐蚀做准备。
  • 腐蚀核的大小,大的才能将线对腐蚀在一起 但是太大就将其他部分都腐蚀进来了。

代码

在这里插入图片描述

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 Sunny.UI;

using OpenCvSharp;
using OpenCvSharp.Extensions;
using System.Windows.Documents;
        public static Mat img;
        public static Mat img2;
        public static Mat gray;

导入图片

        private void uiButton1_Click(object sender, EventArgs e)
        {
   
    
    
           

            OpenFileDialog ofd = new OpenFileDialog();
            //Filter属性可以过滤要选择的文件类型
            ofd.Filter = "(*.jpg)|*.jpg|(*.png)|*.png";//这样只显示了.docx的文件 我新建的doc和txt文件都没有显示出来
            ofd.Title = "请选择图片";//title 属性属性可以设置文件对话框的标题
                                // ofd.Multiselect = true;//表示可以多选 默认是不可以多选的

            ofd.InitialDirectory = @"F:\StudyData_ele\Project\simaite\endoscope\新版\空间频率响应";//初始打开目录
                                                                                       //ofd.InitialDirectory = System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop);//这是系统提供的桌面路径,还可以是其他的路径:比如文档、音乐等文件夹

            if (ofd.ShowDialog() == DialogResult.OK)
            {
   
    
    
                img = new Mat($@"{
     
      
      ofd.FileName}");//注意这里要这样写 因为直接获得的地址里面的是\而不是\\
                                                  //Mat img = new Mat(@"F:\StudyData_ele\Project\simaite\endoscope\新版\picTest\WindowsFormsApp1\pic\1.jpg");
                img2 

猜你喜欢

转载自blog.csdn.net/chengcao123/article/details/128452504