Compare commits
No commits in common. "2894a4d91aff9e93e5ad9c01131d5ee016d01e01" and "9bfe3ad6836320173b59dd5976849ae8c47bbdf8" have entirely different histories.
2894a4d91a
...
9bfe3ad683
@ -1,42 +0,0 @@
|
||||
// detection_worker.cpp
|
||||
#include "detectionworker.h"
|
||||
#include "globals.h"
|
||||
#include <QDebug>
|
||||
#include "onnxrunner.h"
|
||||
|
||||
// 声明外部ONNXRunner实例数组
|
||||
extern ONNXRunner* g_runner_array[2];
|
||||
|
||||
// 定义检测工作者函数
|
||||
void detectionWorker(int camera_id)
|
||||
{
|
||||
// 验证相机ID的有效性
|
||||
if(camera_id < 0 || camera_id >= 2)
|
||||
{
|
||||
qCritical() << "Invalid camera_id:" << camera_id;
|
||||
return;
|
||||
}
|
||||
|
||||
// 运行检测工作者线程,直到停止信号被触发
|
||||
while(g_recognitionRunning[camera_id]->load())
|
||||
{
|
||||
ImageData data;
|
||||
// 从图像队列中获取图像数据
|
||||
if(g_img_Queue[camera_id]->dequeue(data))
|
||||
{
|
||||
// 执行ONNX推理
|
||||
std::vector<Detection> detections = g_runner_array[camera_id]->predict(data.image);
|
||||
cv::Mat processed_img = g_runner_array[camera_id]->postProcess(detections, data.image);
|
||||
|
||||
// 构建检测结果
|
||||
ImageData result;
|
||||
result.camera_id = data.camera_id;
|
||||
result.image = processed_img;
|
||||
|
||||
// 将检测结果推入结果队列
|
||||
g_result_Queue[camera_id]->enqueue(result);
|
||||
}
|
||||
}
|
||||
|
||||
qDebug() << "DetectionWorker: Stopped for camera" << camera_id;
|
||||
}
|
||||
@ -1,8 +0,0 @@
|
||||
#ifndef DETECTION_WORKER_H
|
||||
#define DETECTION_WORKER_H
|
||||
#include "onnxrunner.h"
|
||||
|
||||
// 检测工作者函数声明
|
||||
void detectionWorker(int camera_id);
|
||||
|
||||
#endif // DETECTION_WORKER_H
|
||||
@ -1,62 +0,0 @@
|
||||
// storageworker.cpp
|
||||
#include "storageworker.h"
|
||||
#include <QDateTime>
|
||||
#include <QDir>
|
||||
#include <QDebug>
|
||||
#include <QStandardPaths>
|
||||
|
||||
StorageWorker::StorageWorker(QObject *parent)
|
||||
: QObject(parent)
|
||||
{
|
||||
}
|
||||
|
||||
StorageWorker::~StorageWorker()
|
||||
{
|
||||
}
|
||||
|
||||
QString StorageWorker::getSaveDirectory()
|
||||
{
|
||||
QString baseDir = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
|
||||
return baseDir;
|
||||
}
|
||||
|
||||
void StorageWorker::process()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
ImageData data;
|
||||
|
||||
if (!g_storageQueue.dequeue(data))
|
||||
{
|
||||
// 队列已停止且为空,退出循环
|
||||
break;
|
||||
}
|
||||
|
||||
if (data.image.empty())
|
||||
{
|
||||
qWarning() << "Received empty image for camera" << data.camera_id;
|
||||
continue;
|
||||
}
|
||||
|
||||
// 定义保存路径,例如使用时间戳
|
||||
QString saveDir = (getSaveDirectory() + QString("/Cam_%1/")).arg(data.camera_id == 0 ? "1" : "2");
|
||||
QDir dir;
|
||||
if (!dir.exists(saveDir))
|
||||
{
|
||||
dir.mkpath(saveDir);
|
||||
}
|
||||
|
||||
QString timestamp = QDateTime::currentDateTime().toString("yyyyMMdd_HHmmss_zzz");
|
||||
QString filePath = saveDir + QString("%1.bmp").arg(timestamp);
|
||||
|
||||
// 使用 OpenCV 直接保存图像
|
||||
if (cv::imwrite(filePath.toStdString(), data.image))
|
||||
{
|
||||
qDebug() << "Successfully saved image to" << filePath;
|
||||
}
|
||||
else
|
||||
{
|
||||
qWarning() << "Failed to save image to" << filePath;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,23 +0,0 @@
|
||||
// storageworker.h
|
||||
#ifndef STORAGEWORKER_H
|
||||
#define STORAGEWORKER_H
|
||||
|
||||
#include <QObject>
|
||||
#include <opencv2/opencv.hpp>
|
||||
#include "globals.h"
|
||||
|
||||
class StorageWorker : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit StorageWorker(QObject *parent = nullptr);
|
||||
~StorageWorker();
|
||||
|
||||
public slots:
|
||||
void process(); // 存储处理槽
|
||||
|
||||
private:
|
||||
QString getSaveDirectory(); // 获取保存目录的函数
|
||||
};
|
||||
|
||||
#endif // STORAGEWORKER_H
|
||||
Loading…
Reference in New Issue
Block a user