150 lines
3.4 KiB
C++
150 lines
3.4 KiB
C++
#include "widget.h"
|
|
#include "ui_widget.h"
|
|
#include <iostream>
|
|
#include <QTcpSocket>
|
|
#include <QPushButton>
|
|
#include <QTimer>
|
|
#include <QEventLoop>
|
|
#include <QElapsedTimer>
|
|
// #include <windows.h>
|
|
#include <QApplication>
|
|
#include <QLabel>
|
|
#include <QImage>
|
|
#include <QPixmap>
|
|
#include <QDateTime>
|
|
#include <img_utils.h>
|
|
|
|
|
|
using namespace std;
|
|
|
|
// 硬编码参数值
|
|
int file_delay = 1270; // 延迟时间(毫秒)
|
|
int file_encoder = 12000; // 编码器值++
|
|
int file_valve = 200; // 阀门通道
|
|
Widget::Widget(QWidget *parent)
|
|
: QWidget(parent)
|
|
, ui(new Ui::Widget)
|
|
{
|
|
ui->setupUi(this);
|
|
ui->camera_0_img->setScaledContents(true);
|
|
|
|
|
|
iniColor();
|
|
iniLowMac();
|
|
iniCamera();
|
|
|
|
// 启动显示定时器,每秒检查一次
|
|
QTimer* timer = new QTimer(this);
|
|
connect(timer, &QTimer::timeout, this, &Widget::refreshImage);
|
|
timer->start(100); // 每50毫秒秒刷新一次界面
|
|
}
|
|
|
|
Widget::~Widget()
|
|
{
|
|
// DestoryCamera();
|
|
|
|
}
|
|
|
|
void Widget::refreshImage()
|
|
{
|
|
refreshSingleImage(0);
|
|
refreshSingleImage(1);
|
|
}
|
|
|
|
void Widget::refreshSingleImage(int camera_id, bool overlay_result)
|
|
{
|
|
// 更新当前的图片0
|
|
MIL_ID current_id = 0;
|
|
if (camera_id == 0)
|
|
{ // 获取当前图片
|
|
{
|
|
QMutexLocker locker(&gDispPicMutex0);
|
|
current_id = gDispCurrentPicId0;
|
|
}
|
|
if (current_id == 0)
|
|
return;
|
|
cv::Mat img = ImageUtils::mil2Mat(current_id);
|
|
//进行结果的转化叠加
|
|
if (overlay_result)
|
|
{
|
|
MIL_ID mask_id = 0;
|
|
{
|
|
QMutexLocker locker(&gMaskMutex0);
|
|
mask_id = gMask0;
|
|
}
|
|
cv::Mat mask = ImageUtils::mil2Mat(mask_id);
|
|
img = ImageUtils::overlayResultOnInput(img,mask,0.5);
|
|
}
|
|
//刷新显示
|
|
QPixmap pixmap0 = ImageUtils::mat2QPixmap(img);
|
|
if (!pixmap0.isNull())
|
|
{
|
|
ui->camera_0_img->setPixmap(pixmap0);
|
|
}
|
|
}
|
|
// 更新当前的图片1
|
|
else if (camera_id == 1)
|
|
{
|
|
{
|
|
QMutexLocker locker(&gDispPicMutex1);
|
|
current_id = gDispCurrentPicId1;
|
|
|
|
if (current_id == 0)
|
|
return;
|
|
cv::Mat img = ImageUtils::mil2Mat(current_id);
|
|
//进行结果的转化叠加
|
|
if (overlay_result)
|
|
{
|
|
MIL_ID mask_id = 0;
|
|
{
|
|
QMutexLocker locker(&gMaskMutex1);
|
|
mask_id = gMask1;
|
|
}
|
|
cv::Mat mask = ImageUtils::mil2Mat(mask_id);
|
|
img = ImageUtils::overlayResultOnInput(img,mask,0.5);
|
|
}
|
|
//刷新显示
|
|
QPixmap pixmap1 = ImageUtils::mat2QPixmap(img);
|
|
if (!pixmap1.isNull())
|
|
{
|
|
ui->camera_1_img->setPixmap(pixmap1);
|
|
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
qWarning() << "The given Camera ID is wrong!";
|
|
}
|
|
}
|
|
|
|
|
|
void Widget::on_pushButton_clicked()
|
|
{
|
|
Start_camera();
|
|
}
|
|
|
|
void Widget::on_pushButton_2_clicked()
|
|
{
|
|
SaveImg_Flag = 1;
|
|
}
|
|
|
|
|
|
void Widget::on_btn_goto_sort_clicked()
|
|
{
|
|
// 回复显示的图片
|
|
{
|
|
QMutexLocker locker(&gDispPicMutex0);
|
|
gDispCurrentPicId0 = 0;
|
|
}
|
|
ui->camera_0_img->clear();
|
|
{
|
|
QMutexLocker locker(&gDispPicMutex1);
|
|
gDispCurrentPicId1 = 0;
|
|
}
|
|
ui->camera_1_img->clear();
|
|
DestoryCamera();
|
|
DestoryLowMac();
|
|
}
|
|
|