本文主要是介绍将DIB/bitmap读入内存并转为 halcon hobject,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题由来:在mfc halcon混合编程中,发现halcon::readimage() 函数读取图片(8位8M/bmp)至少200ms,当然24位 32位bmp 倍数所消耗的时间倍数上涨。那么有没有什么方法加快读取速度?目前发现一个亲测可行的方式:
1、通过 DIBAPI 读取图片,下载可转到点击打开链接,赚点积分
2、获取所读读片的图像数据的首地址,注意非结构头地址
3、通过halcon算子GenImage1Extern or GenImage3Extern转为hobject
以下为从硬盘读取8位bmp,并转为halcon灰度图示意,24位相似,网上这方面资源较多,不在赘述。
HObject ho_Image;CFile file;file.Open(threadParameter->m_path,CFile::modeRead|CFile::modeNoTruncate);HDIB hDIB = ReadDIBFile(file);//加载bmp图片file.Close();LPSTR lpbi = (LPSTR)::GlobalLock((HGLOBAL)hDIB);//通过非连续内存片段的句柄获取指针,具体百度GlobalAllocLPSTR pimage = FindDIBBits(lpbi);GenImage1Extern(&ho_Image, "byte", (Hlong)DIBWidth(lpbi), (Hlong)DIBHeight(lpbi), (Hlong)pimage, NULL);//转换关键函数,开发文档里说的很详细
这篇关于将DIB/bitmap读入内存并转为 halcon hobject的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!