增加系统资源监控并输出为表格,相机补黑图修改为下次触发时补黑图。
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
#include <QDebug>
|
||||
QQueue<std::vector<cv::Mat>> queuePic;
|
||||
QMutex* m_mutex;
|
||||
bool triggerIng = false;
|
||||
bool recivingImage = false,frameStart = false;
|
||||
int lastFrameId = -1 ;
|
||||
long long frameStampCountStart = 0, frameStampCountEnd = 0;
|
||||
@@ -300,12 +301,19 @@ Hd_3DCameraLMI_module::Hd_3DCameraLMI_module()
|
||||
{
|
||||
m_mutex = new QMutex();
|
||||
}
|
||||
|
||||
Hd_3DCameraLMI_module::~Hd_3DCameraLMI_module()
|
||||
{
|
||||
ExceptionCB(-1, NULL);
|
||||
}
|
||||
|
||||
void Hd_3DCameraLMI_module::genBlackImg(std::vector<cv::Mat>& vecPic)
|
||||
{
|
||||
cv::Mat blank_image1(1000, 1000, CV_8UC1, cv::Scalar(0, 0, 0));
|
||||
cv::Mat blank_image2(1000, 1000, CV_8UC1, cv::Scalar(0, 0, 0));
|
||||
vector<cv::Mat> dstvec;
|
||||
dstvec.push_back(blank_image1);
|
||||
dstvec.push_back(blank_image2);
|
||||
vecPic.assign(dstvec.begin(), dstvec.end());
|
||||
}
|
||||
bool Hd_3DCameraLMI_module::sendData(std::vector<cv::Mat>& vecPic, QByteArray &data )
|
||||
{
|
||||
|
||||
@@ -320,12 +328,7 @@ bool Hd_3DCameraLMI_module::sendData(std::vector<cv::Mat>& vecPic, QByteArray &d
|
||||
if (queuePic.empty())
|
||||
{
|
||||
//qDebug() << " [Error] " << " srcImage is null";
|
||||
cv::Mat blank_image1(100, 100, CV_8UC1, cv::Scalar(0, 0, 0));
|
||||
cv::Mat blank_image2(100, 100, CV_8UC1, cv::Scalar(0, 0, 0));
|
||||
vector<cv::Mat> dstvec;
|
||||
dstvec.push_back(blank_image1);
|
||||
dstvec.push_back(blank_image2);
|
||||
vecPic.assign(dstvec.begin(), dstvec.end());
|
||||
genBlackImg(vecPic);
|
||||
m_mutex->unlock();
|
||||
return false;
|
||||
}
|
||||
@@ -348,7 +351,6 @@ bool Hd_3DCameraLMI_module::reciveData(std::vector<cv::Mat> &, QByteArray &qbyte
|
||||
|
||||
bool Hd_3DCameraLMI_module::initParas(QByteArray &)
|
||||
{
|
||||
//return true;
|
||||
bool flag = InitLmi(id); //3D初始化
|
||||
m_status = flag ? OK : UnInit;
|
||||
if (!flag)
|
||||
@@ -378,20 +380,58 @@ bool Hd_3DCameraLMI_module::run()
|
||||
//qDebug() << "[info]" << __FUNCTION__ << " line:" << __LINE__ << " run start" << id;
|
||||
try
|
||||
{
|
||||
int timeOut = 0;
|
||||
queuePic.clear();
|
||||
while (timeOut < 500)
|
||||
//方法1 超时机制
|
||||
// queuePic.clear();
|
||||
//int timeOut = 0;
|
||||
//while (timeOut < 500)//ms
|
||||
//{
|
||||
// m_mutex->lock();
|
||||
// if (queuePic.size() > 0)
|
||||
// {
|
||||
// result = true;
|
||||
// m_mutex->unlock();
|
||||
// return true;
|
||||
// }
|
||||
// m_mutex->unlock();
|
||||
// timeOut ++;
|
||||
// QThread::msleep(1);//修改了睡眠1ms
|
||||
//}
|
||||
|
||||
//方法2 在下一次触发时强制给上一次触发补黑图
|
||||
m_mutex->lock();
|
||||
if (triggerIng == true)//仍然在处理上一次触发
|
||||
{
|
||||
std::vector<cv::Mat>imgs;
|
||||
genBlackImg(imgs);
|
||||
queuePic.enqueue(imgs);
|
||||
m_mutex->unlock();
|
||||
int cnt = 0;
|
||||
while (queuePic.size() > 0 || cnt < 100)
|
||||
{
|
||||
QThread::msleep(1);
|
||||
cnt++;
|
||||
if (cnt > 10)
|
||||
qDebug() << "insert black img 2 long";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
triggerIng = true;
|
||||
m_mutex->unlock();
|
||||
}
|
||||
//强制给上一次触发补黑图 结束
|
||||
while (true)
|
||||
{
|
||||
m_mutex->lock();
|
||||
if (queuePic.size() > 0)
|
||||
{
|
||||
result = true;
|
||||
result = true;
|
||||
triggerIng = false;
|
||||
m_mutex->unlock();
|
||||
return true;
|
||||
}
|
||||
m_mutex->unlock();
|
||||
timeOut += 10;
|
||||
QThread::msleep(10);
|
||||
QThread::msleep(1);
|
||||
}
|
||||
}
|
||||
catch (QString ev)
|
||||
|
||||
Reference in New Issue
Block a user