如何使用VC在Halcon中得到像素的信息

 我来答
休闲居大伟
2015-05-17 · TA获得超过5419个赞
知道大有可为答主
回答量:6865
采纳率:91%
帮助的人:1.1亿
展开全部
 在VC环境下进行图像处理比在MATLAB下开发运算速度要快,但工作量要大的多,用MATLAB做图像处理,直接调用里面的相关函数就可以完成,而且比较直观,但满足不了在速度上要求比较高的场合。所以在VC环境下直接开发往往是首选,但由于VC只是一个开发环境,答差档直接运用于图像处理的函数还得自己编写添加,所以往往很耗时。随着各类机器视觉软件的开发,各种机器视觉软件包也相继产生,HALCON就是一个比较强大的机器视觉软件,功能比较全,在HDevelop环境下开发比较容易,执行速度也较快。除此之外,HALCON也可以集成到其他开发环境下,这样可以节约底层开发时间,直接有效地运用它的函数库,可以产生很好的效果。下面就结合自己的经验,简单介绍一下在VC环境下如何使用HALCON库。
  在VC环境下进行图像处理,往往需要自己写图像处理的类,现在有一些前人写好的类,比如CDib类、DIBAPI类等等,因此可以直接“拿来主义”。HALCON库就相当于一个封装好的类,通过在VC下进行一些简单的设置,我们就可以使用其里面的函数了。下面是在VC环境下如何设置:

  1. 首先在project->settings.....中的Link属性页中添加halconcpp.lib;

  2. 其次在project->settings.....中的C/C++属性页中的Preprocessor中添加目录$(HALCONROOT)\include,$(HALCONROOT)\include\cpp;

  3. 然后在project->settings.....中的Link属性页中input下来菜单中添加路径$(HALCONROOT)\lib\i586-nt4;

  4. 最后当然是不要忘了在程序中添加类的头文件了:#i nclude "HalconCpp.h"

  上面的设置好了,一切OK了。下面就可以在程序中调用HDevelop中的函数了,比如图像增强函数emphasize(hImage, &hRotateImage, 7, 7, 2.0)等等。我们知道在HDevelop中通常图像是作为一个tuple变量,因此在VC中有必要进行变量转换,例如:

  针对灰度图像可以将图像数转换成一个Hobject变量:

  gen_image1(&hImage,"byte",WIDTH, HEIGHT,(long)m_pImageBuffer);

  针对彩色图像,可以分别取出R、G、B三个分量:

  ExtractRGB24Channels(m_pImageBuffer, m_pRed, m_pGreen,m_pBlue);

  然后在转换为Hobject变量:

  gen_image3(&hImage, "byte", width, height, (long )m_pRed, (long )m_pGreen, (long )m_pBlue);

  接下来就可以调用图像处庆灶理函数了,比如

  图像增强:emphasize(hImage, &hRotateImage, 7, 7, 2.0); //参数可以调整

  阈值化:bin_threshold(hImage,&hRotateImage);

  rgb1_to_gray(hImage,&hRotateImage);//转化为灰度图

  把处理完的变量转换成到一个buffer中,用于图像显示:清乱get_image_pointer1(hRotateImage,(long *)&m_pImageBuffer,Type, &width1, &height1);

  但在调用HALCON库函数时也碰到了一些问题,比如在图像旋转中rotate_image(hImage, &hRotateImage, 90, "constant"); 将处理后的变量转换成

  get_image_pointer3(hRotateImage, (long *)&m_pRed, (long *)&m_pGreen, (long *)&m_pBlue, Type, &width1, &height1);

  ComposeRGB24(m_pRed, m_pGreen, m_pBlue, m_pImageBuffer);

  而执行过程中出现错误,get_image_pointer3这个函数报错,Undefined gray value in get_image_pointer3还需解决!
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
prettyocean85
2015-05-22 · TA获得超过252个赞
知道答主
回答量:75
采纳率:0%
帮助的人:51.1万
展开全部
用get_grayval可以获得任意像素的灰度值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式