#include "widget.h" #include "ui_widget.h" #include #include #include #include #include #include // #include #include #include #include #include #include #include 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(); }