halcon和MFC打开显示图片和打开相机

参考:[软件安装] Halcon联合VC配置及例程_c++ halcon-CSDN博客

 参考:[MFC] 调用相机采集图像(Halcon)_初始化bitmapinfo结构,此结构在保存bmp文件、显示采集图像时使用-CSDN博客       这个是最值得看的!

参考:VS2015 + Halcon18 - (一) MFC加载图片&打开相机_vs2015 mfc halcon读取tif-CSDN博客

参考:Halcon 学习笔记九:MFC+halcon联合-阿里云开发者社区 (aliyun.com)

 参考:摄像头监控画面实时获取 实时查看监控画面_mob6454cc673226的技术博客_51CTO博客


 

下面这个讲了一下halcon算子和原理的基础知识:

机器视觉_HALCON_HDevelop用户指南_3.用HDevelop采集图像-CSDN博客

机器视觉_HALCON_HDevelop用户指南_7.图像采集助手_halcon实时处理读取视频图像-CSDN博客

 

其中:[MFC] 调用相机采集图像(Halcon)_初始化bitmapinfo结构,此结构在保存bmp文件、显示采集图像时使用-CSDN博客 

对于信息头的处理很有意思,在Windows中,信息头的结构:

typedef struct tagBITMAPINFO {
  BITMAPINFOHEADER bmiHeader;
  RGBQUAD bmiColors[1];
} BITMAPINFO, FAR *LPBITMAPINFO, *PBITMAPINFO;

bmiColors是一个一维的数组,如果不使用指针,直接使用变量的话,那bmiColors的大小就是1,颜色表用256循环赋值会超限。而将信息头搞成一个指针,那么这个bmiColors数组就可以用256个循环赋值了!

1 BITMAPINFO* bmpinf;
2 char Buf[2048]; 3 bmpinf = (BITMAPINFO*)Buf;

 

自己处理的时候碰到了以下问题:

1.包含halconcpp.h的时候总是没有HalconCpp命名空间,结果搞了半天发现是因为include错了文件,不是要include/cpp/halconcpp.h而是要include/halconcpp/halconcpp.h

2.图像不显示,结果发现是因为没有为虚拟DC调用selectobject将位图选进来

3.显示的图像是格格点点那样的,结果是因为创建位图的时候,传入的DC应该是实际的CPaint的DC,而不是虚拟DC

 

添加菜单栏的时候碰到了问题:

1.使用for(auto it:map)结果,map中的值没有被修改,后面才知道需要使用for(auto& it:map)加上引用才行!

posted @   沙漠之狗  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示