#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(50); // 每50毫秒秒刷新一次界面 } Widget::~Widget() { // DestoryCamera(); } void Widget::refreshImage() { refreshSingleImage(0); refreshSingleImage(1); } void Widget::refreshSingleImage(int camera_id) { // 更新当前的图片0 MIL_ID current_id = 0; if (camera_id == 0) { { QMutexLocker locker(&gDispPicMutex0); current_id = gDispCurrentPicId0; } if (current_id == 0) return; // 获取 QPixmap 并设置到 QLabel QPixmap pixmap0 = ImageUtils::mat2QPixmap(ImageUtils::mil2Mat(current_id)); 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; // 获取 QPixmap 并设置到 QLabel QPixmap pixmap1 = ImageUtils::mat2QPixmap(ImageUtils::mil2Mat(current_id)); 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(); }