为什么调用opencv函数运行变慢

daizhisheng 2014-09-12 08:57:20
我使用的是MFC写的C++程序做机器视觉的产品质量检测,之前算法测试时是通过读取一张保存在硬盘中的图片来分析图像中的产品,这样整个测试时间是1.8S;现在是采用在线检测的方法来检测,即从相机中提取当前帧(某一时刻图像)来分析,整个之前写好的程序放在一个button的响应函数中,现在运行发现处理一张图像要耗费7秒多的时间,这是为什么呢?经过但不调试后明显感觉是有cv函数运行都变的好慢,这是执行效率问题吗?如何解决?相机中的图像我是通过一个IplImage类型图像的全局变量来传递到按钮的响应函数中去的,而且发现速度比较快。

这是个回调函数:也就是相机在不停的采集图像
INT CALLBACK SnapCallBack(INT iCamID, BYTE *pImageBuffer, tDSFrameInfo *pFrInfo) //相机回调函数
{
//TRACE("%ld\n",pFrInfo->uiTimeStamp);
BYTE* pBmp24 = CameraISP(iCamID, pImageBuffer, pFrInfo);//CameraISP()用于将相机原始数据处理成RGB24位图像数据。
CameraDisplayRGB24(iCamID,pBmp24, pFrInfo); // 功 能:显示RGB24位图像数据
cvSetData(srcImage,pBmp24,2592*3); // BYTE转化为IpLImage,这是我添加的

return 0;
}
在这个回调函数之前定义了一个全局iplImage型变量:IplImage* srcImage = cvCreateImageHeader(cvSize(2592,1944),IPL_DEPTH_8U,3);
用来存储pBmp24格式转换到IplImage类型的图像。

void CDVP_VCDlg::OnBnClickedTestOnline()
{
// TODO: 在此添加控件通知处理程序代码
) //这是在线检测按钮的函数,采集到的图像就要同过全局变量送到这里去处理,那些cv函数都是放在这里处理。
...全文
428 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
relaxisland 2014-09-13
  • 打赏
  • 举报
回复
看不出来, 你用的是release版的 dll库吧。
好脾气先生 2021-06-21
  • 举报
回复
@relaxisland 请问release的DLL库有什么问题?会导致处理速度变慢吗?

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧