VisionPro二次开发学习笔记2-使用C#从图像数据库文件获取图像

使用C#从图像数据库文件获取图像

图像文件对象使您可以从图像文件获取图像,以及将获取的图像保存到图像文件中以备后用。VisionPro为图像文件对象提供了几种类,具体取决于您要使用的图像格式:

  • 对CDB / IDB文件使用CogImageFileCDB对象
  • 将CogImageFileBMP对象用于位图文件
  • 对TIFF文件使用CogImageFileTIFF对象

读取带有图像文件对象的图像文件需要执行以下步骤:

  1. 创建一个图像文件对象。
  2. 打开图像文件进行读取。
  3. 获取图像以供使用和显示。

1. 添加引用

  • Cognex.VisionPro
  • Cognex.VisionPro.ImageFile

2. 定义变量和枚举

public enum ImageFileType {
        OTHER,
        IDB,
        CDB,
        BMP,
        TIFF,
        
    }

        private CogImageFileCDB myImageFileOperator;
        private CogImageFileBMP myImageFileBMP;
        private CogImageFileTIFF myImageFileTIFF;

        private int counter;
        private int maxImage;
        private ImageFileType CurrentFileType;

3. 创建一个图像文件对象

private ImageFileType ConvertStringToImageFileType(string text) {
            if (text.Contains(".cdb"))
                return ImageFileType.CDB;
            if (text.Contains(".idb"))
                return ImageFileType.IDB;
            if (text.Contains(".bmp"))
                return ImageFileType.BMP;
            if (text.Contains(".tiff"))
                return ImageFileType.TIFF;
            else
                return ImageFileType.OTHER;
        }

private void InitializeFifo() {

            counter = 0;
            CurrentFileType = ConvertStringToImageFileType(Path.GetExtension(textBoxFilePath.Text));
            switch (CurrentFileType)
            {
                case ImageFileType.IDB:
                case ImageFileType.CDB:
                    myImageFileOperator = new CogImageFileCDB();
                    myImageFileOperator.Open(textBoxFilePath.Text, CogImageFileModeConstants.Read);
                    maxImage = myImageFileOperator.Count;
                    break;
                case ImageFileType.BMP:
                    myImageFileBMP = new CogImageFileBMP();
                    myImageFileBMP.Open(textBoxFilePath.Text,CogImageFileModeConstants.Read);
                    maxImage = myImageFileBMP.Count;
                    break;
                case ImageFileType.TIFF:
                    myImageFileTIFF = new CogImageFileTIFF();
                    myImageFileTIFF.Open(textBoxFilePath.Text,CogImageFileModeConstants.Read);
                    maxImage = myImageFileTIFF.Count;
                    break;
                case ImageFileType.OTHER:
                    maxImage = 0;
                    break;
                default:
                    break;
            }
            ;
            
            
        }

4. 打开图像文件进行读取

打开Form2.cs[设计]界面,新增两个按钮,一个TextBox用于显示路径,一个label显示当前图片位置和总数,一个CogDisplay控件

界面如下:

在这里插入图片描述

处理按钮点击事件

private void button2_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog openFileDialog = new OpenFileDialog())
            {
                // 设置文件过滤器
                openFileDialog.Filter = "Image Files (*.cdb;*.idb;*.bmp;*.tiff)|*.cdb;*.idb;*.bmp;*.tiff";
                openFileDialog.Title = "选择图片文件";

                // 显示对话框并检查用户是否选择了文件
                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    // 将选择的文件路径赋值给文本框
                    textBoxFilePath.Text = openFileDialog.FileName;
                }
            }
            InitializeFifo();
        }

5. 获取图像以供使用和显示

/// <summary>
        /// 浏览
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            if (counter==maxImage)
            {
                counter = 0;
                
            }
            switch (CurrentFileType)
            {
                case ImageFileType.IDB:
                case ImageFileType.CDB:
                    cogDisplay1.Image = myImageFileOperator[counter];
                    break;
                case ImageFileType.BMP:
                    cogDisplay1.Image = myImageFileBMP[counter];
                    break;
                case ImageFileType.TIFF:
                    cogDisplay1.Image = myImageFileTIFF[counter];
                    break;
                case ImageFileType.OTHER:
                    MessageBox.Show("图片格式错误!");
                    break;
                default:
                    break;
            }
            
            counter = counter + 1;
            this.label1.Text = $"第{counter}张/共{maxImage}张";
        }

6. 处理窗体关闭事件

private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            Application.DoEvents();
            cogDisplay1.Dispose();
            
        }

总结

在这里插入图片描述
在这里插入图片描述

一个简易的图片数据库文件浏览器到这里就实现了.

扩展

如果您的应用程序要求您读取多种文件类型,可以使用通用的CogImageFile对象。
后台代码改动如下:

        private int counter;
        private int maxImages;
        private CogImageFile ImageFile;
        
        private void InitializeFifo() {
            ImageFile = new CogImageFile();
            ImageFile.Open(textBoxFilePath.Text,CogImageFileModeConstants.Read);
            counter = 0;
            maxImages = ImageFile.Count;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (ImageFile==null)
            {
                MessageBox.Show("没有输入图像!");
            }
            if (counter == maxImages)
            {
                counter = 0;
            }
            cogDisplay1.Image = ImageFile[counter];
            counter = counter + 1;
            label1.Text = $"第{counter}/{maxImages}张";
        }

        private void button2_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog fileDialog=new OpenFileDialog())
            {
                if (fileDialog.ShowDialog()==DialogResult.OK)
                {
                    textBoxFilePath.Text = fileDialog.FileName;
                }
            }
            InitializeFifo();
        }
    }
}

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: VisionPro是一款视觉系统开发平台,提供了丰富的工具和功能,用于图像处理和分析。VisionPro二次开发是指在VisionPro的基础上进行个性化定制和扩展,以满足特定应用需求。 VisionPro二次开发可以通过编写自定义的算法和脚本来实现。用户可以使用VisionPro提供的算法库和API,根据自己的需求进行算法的扩展和修改,以达到更好的图像处理效果。 此外,VisionPro还提供了友好的界面和工具,可以通过拖拽、配置等方式,快速定制图像处理的流程。用户可以根据自己的需求,选择合适的工具和参数配置,来完成特定的图像处理任务。 VisionPro二次开发也涉及到与其他系统的集成。用户可以通过编写插件或接口,将VisionPro与其他设备或软件进行连接,实现数据的共享和交互。通过与其他系统的集成,可以扩展VisionPro的应用范围,提高系统的整体效能。 总之,VisionPro二次开发是一项在原来基础上进行个性化定制和扩展的工作,通过算法的扩展、界面的定制以及与其他系统的集成,来实现更灵活、更高效的图像处理和分析功能。 ### 回答2: VisionPro是一款先进的机器视觉软件,广泛用于工业自动化领域。visionpro二次开发是指在VisionPro软件基础上进行二次开发,根据实际需求进行定制化的开发工作。 VisionPro二次开发的目的是为了满足特定的需求或解决特定的问题。通过二次开发,可以添加新的图像处理算法、优化现有的功能、增加用户界面、集成外部设备或应用程序等。这样可以提高VisionPro的适用性和灵活性,使其更好地适应各种不同的应用场景。 在进行VisionPro二次开发时,首先需要了解和熟悉VisionPro的基本功能和特性。然后根据需要,进行软件开发、算法设计、界面设计等工作。开发完成后,还需要进行测试和调试,确保开发的功能符合要求并且可以稳定运行。 VisionPro二次开发的好处是可以根据实际需求进行定制化开发,使其更好地适应特定的应用场景。这样可以提高生产效率、降低生产成本,并且提供更好的产品质量控制。此外,VisionPro二次开发还可以提供更多的功能和选择,提高系统的灵活性和扩展性。 总之,VisionPro二次开发是一项重要的工作,可以定制化开发机器视觉应用程序,提高生产效率和质量控制的能力。这需要专业的技术团队和广泛的行业经验,以确保开发的软件能够满足实际需求并可靠运行。 ### 回答3: VisionPro是一款强大的图像处理软件,可用于实现机器视觉应用。VisionPro二次开发是指在基础软件上进行定制开发,以满足特定的应用需求。 VisionPro二次开发可以通过以下几个步骤实施: 首先,需要对应用需求进行详细的调研和分析。了解客户的具体需求,明确所需实现的功能和目标。 其次,根据需求分析的结果,制定开发方案和计划。确定所需功能的开发方式和技术手段,以及开发的时间和资源投入。 接下来,进行软件定制开发。根据方案和计划,对VisionPro软件进行二次开发。根据具体的需求,可以通过编写脚本、开发插件或接口等方式,实现所需的功能扩展或定制。 在开发过程中,需要对功能进行测试和调试,确保软件的稳定性和可靠性。可以利用模拟数据或实际图像数据进行测试,对开发的功能进行验证和优化。 最后,进行部署和应用集成。将二次开发VisionPro应用集成到实际的生产环境中,与其他设备或系统进行连接和交互。并对系统进行使用培训,使用户能够熟练操作和维护该应用。 VisionPro二次开发的好处在于可以根据需求进行定制开发,满足特定的应用场景和功能要求。通过二次开发,可以扩展和增强VisionPro的功能,提高图像处理的精确度和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值