forked from deltaxrobot/Delta-X-Software
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathImageProcessing.cpp
91 lines (67 loc) · 2.3 KB
/
ImageProcessing.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include "ImageProcessing.h"
ImageProcessing::ImageProcessing()
{
}
ImageProcessing::~ImageProcessing()
{
foreach(TaskNode* node, taskNodeList.values())
{
delete node;
}
}
TaskNode *ImageProcessing::CreatTaskNode(QString name, int type, QString previousTasks)
{
TaskNode* taskNode = new TaskNode(name, type);
QThread* taskThread = new QThread;
taskNode->moveToThread(taskThread);
connect(taskThread, &QThread::finished, taskNode, &QObject::deleteLater);
connect(taskThread, &QThread::finished, taskThread, &QObject::deleteLater);
taskThread->start();
taskNode->ProjectName = ProjectName;
taskNodeList.insert(name, taskNode);
if (previousTasks != "")
{
QStringList previousTaskList = previousTasks.split("|");
foreach(QString previousTask, previousTaskList)
{
taskNodeList.value(previousTask)->SetNextNode(taskNode);
}
}
return taskNode;
}
TaskNode *ImageProcessing::GetNode(QString name)
{
return taskNodeList.value(name);
}
void ImageProcessing::GotVisibleObjects(QVector<Object> objects)
{
objectInfos.clear();
for(const Object& visibleObject : objects)
{
QVector3D position(visibleObject.X.Real, visibleObject.Y.Real, 0);
objectInfos.append(ObjectInfo(-1, visibleObject.Type.toInt(), position, visibleObject.Width.Real, visibleObject.Length.Real, visibleObject.Angle.Real));
}
emit mappedDetectedObjects(objectInfos, ObjectsName);
}
void ImageProcessing::GotImage(cv::Mat image)
{
cv::Mat mat = image.clone();
// qDebug() << "Image Thread id: " << QThread::currentThreadId();
qDebug() << "In thread start: " << QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz");
if (resizeValue != cv::Size(0, 0))
{
resizeValue.height = resizeValue.width * ((float)mat.rows / mat.cols);
cv::resize(mat, mat, resizeValue, cv::INTER_NEAREST);
}
cv::warpPerspective(mat, mat, perspectiveMatrix, mat.size(), cv::INTER_NEAREST);
QThread::sleep(1);
qDebug() << "In thread end: " << QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz");
}
void ImageProcessing::GotResizeValue(cv::Size size)
{
resizeValue = size;
}
void ImageProcessing::GotPerspectiveMatrix(cv::Mat matrix)
{
perspectiveMatrix = matrix.clone();
}