点击下方卡片,关注“OpenCV与Halcon视觉”公众号。

视觉/图像重磅干货,第一时间送达!

导读

本文主要介绍Halcon读取读取图片算子read_image使用时可能出现的问题以及在C++环境的处理方法。

背景介绍

Halcon中最基本的算子read_image,用来读取一张图片,使用时如果不注意也可能会翻车。

先看下简单的使用实例:

* Reading an image:  read_image(Image,'mreut')
* Reading 3 images into an image array:  read_image(Images,['ic0','ic1','ic2'])
* Setting of search path for images on '/mnt/images' and '/home/images':  set_system('image_dir','/mnt/images:/home/images')

如果路径和图片格式正确的情况下,读图也不会出问题,反之直接抛异常。

无情啊,就不能像OpenCV一样判断一下Mat属性?用Mat.empty()或者Mat.data这样?不好意思,Halcon这边没有这样的方法提供。那么遇到问题我们怎么办呢?

异常情形与解决方法

read_image读取图片异常情形一般分为两种:

【1】图片路径不正确或对应路径下图片不存在;

【2】图片格式有问题(与Halcon内部设置不符)。

对于第【1】种情况,我们直接判断对应路径下的文件是否存在即可:

#include <fstream>...const char *filePath = "./lena.jpg";ifstream file(filePath);if(file.good()) //文件存在    ReadImage(&ho_Image, filePath);else {    cout <<"image path is error, check again!" <<endl;    return;}

对于第【2】种情况,一般是图片实际格式与图片后缀名不符。具体可以参考下面链接:https://www.51halcon.com/forum.php?mod=viewthread&tid=528&highlight=read%5C_image

查找正确的格式:打开软件“UltraEdit”(下载地址:http://www.onlinedown.net/soft/7752.htm)使用16进制查看:

以下图lena.jpg为例,OpenCV读取正常,Halcon读取异常

错误提示:HALCON error #5576: JPEG: Error in input image

通过上面的方法查看,文件头确实与png文件相符,更改图片后缀名为png然后便可以正常读取。

在C++代码中,这种情形只能添加try catch通过异常捕获的方法来处理。

QString imgPath = "./lena.jpg";std::string p1 = imgPath.toStdString();const char *p2 = p1.c_str();try{    const char *filePath = p2;    ifstream file(filePath);    if(file.good())        ReadImage(&ho_Image, filePath);    else    {        cout <<"image path is error, check again!" <<endl;        return;    }}catch(HException &Exception){    qDebug()<< Exception.ProcName().Text(); //实际的HALCON算子的名字    qDebug()<< Exception.ErrorMessage().Text(); //错误信息    qDebug()<< Exception.ErrorCode(); //错误码}

综上所述,Halcon中避免因为read_image读取图片导致程序奔溃,可以直接使用try catch异常捕获来处理,然后再去查看具体原因。

—THE END—

更多视觉图像处理相关内容,请点击关注公众号:OpenCV与Halcon视觉。

Halcon读图出错怎么办?ReadImage常见错误与处理方法(C++)相关推荐

  1. SAP UI5 应用开发教程之三十九 - SAP UI5 应用出现白屏的一些常见错误和分析方法分享试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  2. c语言编译配置文件出错,Android4.4/CM11编译常见错误及解决方法!

    Android4.4/CM11编译常见错误及解决方法! 前言:关于Android4.4/CM11编译中遇到的一些错误,本人进行了整理.有需要的童鞋可以做个参考,如果有什么建议也欢迎指出! 问题1: 编 ...

  3. 稳定性专题 | Spring Boot 常见错误及解决方法

    导读 『StabilityGuide』是阿里多位阿里技术工程师共同发起的稳定性领域的知识库开源项目,涵盖性能压测.故障演练.JVM.应用容器.服务框架.流量调度.监控.诊断等多个技术领域,以更结构化的 ...

  4. OSPF常见错误和排错方法

    OSPF是一种配置上比较复杂的协议, 所以在实际操作中非常容易出错,这里介绍一下OSPF的一些常见错误和排查方法: 一.OSPF 邻居关系无法建立 这是实际工程中最为常见的错误,对于这种错误需要到以下 ...

  5. c语言调试出错误怎么改,C语言调试常见错误及修改方法(附习题)

    <C语言调试常见错误及修改方法(附习题)>由会员分享,可在线阅读,更多相关<C语言调试常见错误及修改方法(附习题)(12页珍藏版)>请在人人文库网上搜索. 1.1.调试C程序时 ...

  6. centos linux 系统日常管理4 scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法 第十七节课...

    centos linux 系统日常管理4  scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法  第十七节课 rsync可以增量同步,scp不行 ...

  7. 【安全】Kerberos相关问题进行故障排除| 常见错误和解决方法

    1.概述 转载 为了学习:Kerberos相关问题进行故障排除| 常见错误和解决方法 2.总结 可以用来帮助诊断Kerberos相关问题的原因并实施解决方案的指南. 3. 症状 单击症状链接转到相应的 ...

  8. c语言程序中的错误可分为,C语言程序常见错误与调试方法(1)

    <C语言程序常见错误与调试方法(1)>由会员分享,可在线阅读,更多相关<C语言程序常见错误与调试方法(1)(17页珍藏版)>请在人人文库网上搜索. 1.C语言程序常见错误与调试 ...

  9. Android 源码编译及常见错误及解决方法

    Android 源码编译及常见错误及解决方法 参考文章: (1)Android 源码编译及常见错误及解决方法 (2)https://www.cnblogs.com/kyyblabla/p/360393 ...

最新文章

  1. C/C++ 32位/64位 sizeof(数据类型)
  2. 三种权重的初始化方法
  3. linux系统下使用xampp 丢失mysql root密码【xampp的初始密码为空】
  4. fatal error: alsa/asoundlib.h: 没有那个文件或目录错误解决办法
  5. 代码执行-preg_replace
  6. Javascript - ExtJs - TreePanel组件
  7. eclipse从svn导入maven项目变成普通项目解决办法
  8. Mblog 开源Java多人博客系统
  9. android绘制论文,基于Android平台的三维地形绘制研究与实现
  10. arcengine 图层中节点抽稀功能(c++)
  11. gradle对java插件的扩展_Gradle之java插件入门
  12. 数据分析实例之股票市场数据分析
  13. Cesium开发环境搭建的几种方法总结
  14. 计算机二级c语言2019年3月,2019年3月计算机二级
  15. C语言中逗号运算符和逗号表达式!
  16. Linux全面解析讲解
  17. 输入一串字符,并判断其中英文字符和数字字符的个数——C语言实现(C语言练习)
  18. resnet50中的bottleneck
  19. 元宇宙时代NFT的价值衡量
  20. 宝鸡机电学院计算机中心电话,机电工程学院

热门文章

  1. Java开发必学:Java开发进大厂面试必备技能,技术总监都拍手叫好
  2. 用自己的雷达进行Cartographer建图或仿真
  3. 44.驱动--设备树内的中断
  4. 海贼王之伟大航路解题报告
  5. kettle案例四使用java脚本进行数据处理
  6. 基于JavaSwing的雷电游戏(附论文)
  7. 【计算机原理与接口技术(UNIX)⑲ 完结篇】——可编程计数器 8254 [ 流光发生器、8254工作方式检测程序的设计]
  8. CSE105 Coursework
  9. 我爱赚钱吧:学生都可以做的兼职工作
  10. 嵌入式C语言编程中经验教训总结(二)LDS链接文件解析