【MIL从入门到放弃--图片窗体显示及二值化】

MIL从入门到放弃


前情回顾

上节我们讲了MIL的安装、初始化声明、图片加载显示,显示效果如下图:
在这里插入图片描述

今天我们来进一步说明一下MIL如何将图片显示在Form里,并对图片进行预处理效果显示。


一、将图片显示在Form窗体里

代码如下(示例):

 MIL.MdispSelectWindow(MilDisp,MilImage,panel1.Handle);//参数一:显示ID,参数二:图像ID,参数三:图片显示控件句柄

二、对图片进行二值化处理

1.MimBinarize的使用

代码如下(示例):

  MIL_ID BinImage = 0;
  MIL.MbufAllocColor(MilSys, 1, nSizeX, nSizeY, 8 + MIL.M_UNSIGNED, MIL.M_IMAGE + MIL.M_DISP + MIL.M_PROC, ref BinImage);//声明二值化图像ID,单通道
  MIL.MimBinarize(MilImage, BinImage, MIL.M_FIXED + MIL.M_GREATER, 128, MIL.M_NULL); 超过128灰度值的区域设置成255    

二值化前:
在这里插入图片描述

二值化后:
在这里插入图片描述

2.整体代码

代码如下(示例):

 using Matrox.MatroxImagingLibrary;
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;

namespace VISION
{
    public partial class Form1 : Form
    {

        MIL_ID MilApp = 0;
        MIL_ID MilSys = 0;
        MIL_ID MilDisp = 0;
        MIL_ID MilGraContext = 0;
        MIL_ID MilGraList = 0;
        MIL_ID MilImage = 0;
        

        int nSizeX = 512;
        int nSizeY = 512;

        public Form1()
        {
            InitializeComponent();
            InitialMil();
        }
        private void InitialMil() 
        {

            MIL.MappAllocDefault(MIL.M_DEFAULT, ref MilApp, ref MilSys, ref MilDisp, MIL.M_NULL, MIL.M_NULL);
            MIL.MgraAlloc(MilSys, ref MilGraContext);
            MIL.MgraAllocList(MilSys, MIL.M_DEFAULT, ref MilGraList);
            MIL.MdispControl(MilDisp, MIL.M_ASSOCIATED_GRAPHIC_LIST_ID, MilGraList);
            MIL.MbufAllocColor(MilSys, 3, nSizeX, nSizeY, 8 + MIL.M_UNSIGNED, MIL.M_IMAGE + MIL.M_DISP + MIL.M_PROC, ref MilImage);
            MIL.MbufLoad("E:\\Lena.bmp", MilImage);
            MIL.MdispSelect(MilDisp,MilImage);

            MIL.MdispSelectWindow(MilDisp,MilImage,panel1.Handle);


            MIL_ID BinImage = 0;
            MIL.MbufAllocColor(MilSys, 1, nSizeX, nSizeY, 8 + MIL.M_UNSIGNED, MIL.M_IMAGE + MIL.M_DISP + MIL.M_PROC, ref BinImage);
            MIL.MimBinarize(MilImage, BinImage, MIL.M_FIXED + MIL.M_GREATER, 128, MIL.M_NULL); //超过128灰度值的区域设置成1 小于128的设置为0          
            MIL.MimBinarize(MilImage, BinImage, MIL.M_FIXED + MIL.M_LESS, 128, MIL.M_NULL); //超过128灰度值的区域设置成0,小于128的设置成1    M_IN_RANGE  
            MIL.MimBinarize(MilImage, BinImage, MIL.M_FIXED + MIL.M_IN_RANGE, 100, 128); //超过100灰度值的区域小于128的区域设置成1  ,其他区域设置为0    
            MIL.MdispSelectWindow(MilDisp, BinImage, panel1.Handle);
        }


    }
}

三种二值化效果图如下:

MIL.M_GREATER 效果如下(示例):
在这里插入图片描述

MIL.M_LESS效果如下(示例):
在这里插入图片描述

MIL.M_IN_RANGE效果如下(示例):
在这里插入图片描述


总结

对图像进行预处理前可声明一个预设好的图像区域,将处理后的图片存放在此区域。
另外图像二值化有诸多模式,可从MIL Help中继续深入。恭喜你,你离放弃更近一步了!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

突然好想写BUG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值