记项目中遇到的一个问题。
项目任务:
将工业相机的取流、存图、显示、以及图像基本参数调整封装成纯C的库(.dll),给客户使用,那边用的是C,我们这边用C++写的,使用的是QT。
遇到的问题:
在QT环境下,将相机取流出来的帧m_Frame与信号槽连接后,就可以自由使用帧(用于显示和存图等),连接代码:
connect(&Camera,&TCamera::SgalSendOriData,this,&Thread_Display::SlotGetFrame);
在线程中直接取全局变量m_Frame做显示即可;做测试也是ok滴;
然鹅:
封成库后,用C来调用,线程中则显示没有帧...在线程中多加一句代码来调用一下槽函数获取帧之后,正常运行:
SlotGetFrame(Camera.GetImgdata());//C里没有信号与槽的机制,所以这里要调用一下槽函数,来获取帧
表明C中(或者是客户用的平台中)是不认可QT的信号槽机制的,只能通过调用函数实现功能。。(个人观点)
另外:
测试了信号槽帧原始数据传输效率与调用函数获取帧的效率,信号槽完胜。。