Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gamera_videos_no_ui
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liusq
gamera_videos_no_ui
Commits
1542f525
Commit
1542f525
authored
Sep 14, 2024
by
“liusq”
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改相关日志打印格式
parent
c19e68b8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
65 additions
and
59 deletions
+65
-59
AlgorithmTaskManage.cpp
+9
-9
CameraHandle.cpp
+0
-0
CameraHandle.h
+4
-0
FaceReconitionHandle.cpp
+11
-11
FaceReconitionHandle.h
+1
-1
HttpService.cpp
+1
-6
HumanDetection.cpp
+2
-5
HumanDetection.h
+1
-1
LicensePlateRecognition.cpp
+0
-2
LogHandle.h
+1
-1
LogHandler.cpp
+18
-7
MediaFaceImage.cpp
+4
-4
MediaFaceImage.h
+1
-1
ParkingSpaceInfo.cpp
+0
-1
VidesData.h
+1
-2
gamera_videos.pro
+5
-1
mainwindow.cpp
+6
-7
No files found.
AlgorithmTaskManage.cpp
View file @
1542f525
...
...
@@ -153,7 +153,7 @@ void* AlgorithmTaskManage::schedulingAlgorithm(int scheType) {
}
else
if
(
scheType
==
0x03
)
{
return
schedulingAlgorithmTemplate
(
faceReconitionHandles
,
mtxFace
);
}
else
{
q
Info
()
<<
"参数错误"
;
q
Debug
()
<<
"参数错误"
;
return
nullptr
;
}
}
...
...
@@ -170,10 +170,10 @@ void AlgorithmTaskManage::executeFindDoesItExistEmployee(const cv::Mat &source,s
if
(
selectedFaceReconition
!=
nullptr
&&
!
selectedFaceReconition
->
getImageChanged
())
{
selectedFaceReconition
->
setIsRunning
(
true
);
// 调用选定对象的doesItExistEmployee函数
q
Info
()
<<
"人脸识别算法抢到===>sn"
<<
sSn
<<
selectedFaceReconition
;
selectedFaceReconition
->
doesItExistEmployee
(
source
,
faces
);
q
Debug
()
<<
"人脸识别算法抢到===>sn"
<<
sSn
<<
selectedFaceReconition
;
selectedFaceReconition
->
doesItExistEmployee
(
s
Sn
,
s
ource
,
faces
);
}
else
{
q
Info
()
<<
"没有可用的selectedFaceReconition对象可以调度"
;
q
Debug
()
<<
"没有可用的selectedFaceReconition对象可以调度"
;
return
;
}
}
...
...
@@ -192,10 +192,10 @@ void AlgorithmTaskManage::executeFindlicensePlateNumber(const cv::Mat &source, Q
if
(
selectedLicensePlate
!=
nullptr
)
{
selectedLicensePlate
->
setIsRunning
(
true
);
// 调用选定对象的findHuManCar函数
q
Info
()
<<
"车牌调度算法抢到===>sn"
<<
sSn
<<
selectedLicensePlate
;
q
Debug
()
<<
"车牌调度算法抢到===>sn"
<<
sSn
<<
selectedLicensePlate
;
selectedLicensePlate
->
licensePlateNumber
(
source
,
lpNumber
,
plate
,
currentTime
);
}
else
{
q
Info
()
<<
"没有可用的selectedLicensePlate对象可以调度"
;
q
Debug
()
<<
"没有可用的selectedLicensePlate对象可以调度"
;
return
;
}
}
...
...
@@ -214,11 +214,11 @@ int AlgorithmTaskManage::executeFindHuManCar(const cv::Mat &source, int res,
selectedHumanDetection
->
setIsRunning
(
true
);
// 调用选定对象的findHuManCar函数
q
Info
()
<<
"人形调度算法抢到===>sn"
<<
sSn
<<
"res"
<<
selectedHumanDetection
;
int
detectionResult
=
selectedHumanDetection
->
findHuManCar
(
source
,
res
,
resMap
,
heightReference
,
currentPlate
);
q
Debug
()
<<
"人形调度算法抢到===>sn"
<<
sSn
<<
"res"
<<
selectedHumanDetection
;
int
detectionResult
=
selectedHumanDetection
->
findHuManCar
(
source
,
res
,
resMap
,
sSn
,
heightReference
,
currentPlate
);
return
detectionResult
;
}
else
{
q
Info
()
<<
"没有可用的HumanDetection对象可以调度"
;
q
Debug
()
<<
"没有可用的HumanDetection对象可以调度"
;
return
-
2
;
}
}
CameraHandle.cpp
View file @
1542f525
This diff is collapsed.
Click to expand it.
CameraHandle.h
View file @
1542f525
...
...
@@ -127,6 +127,10 @@ public:
void
setMediaHandle
(
int
mediaHandle
);
void
initAlgorithmPermissions
(
__uint8_t
algorithm
);
void
initFaceFrequency
(
uint64
face_frequency
);
void
initParkingSpaceInfo
(
const
std
::
list
<
vides_data
::
responseArea
>&
areas
);
bool
compareLists
(
const
std
::
list
<
vides_data
::
responseArea
>&
newAreas
);
...
...
FaceReconitionHandle.cpp
View file @
1542f525
...
...
@@ -192,7 +192,7 @@ cv::Mat FaceReconitionHandle::loadImageFromByteStream(const QString& filePath) {
void
FaceReconitionHandle
::
doesItExistEmployee
(
const
cv
::
Mat
&
source
,
std
::
list
<
vides_data
::
faceRecognitionResult
>&
faces
){
void
FaceReconitionHandle
::
doesItExistEmployee
(
const
QString
&
sn
,
const
cv
::
Mat
&
source
,
std
::
list
<
vides_data
::
faceRecognitionResult
>&
faces
){
thread_time
.
store
(
QDateTime
::
currentMSecsSinceEpoch
(),
std
::
memory_order_release
);
ScopeSemaphoreExit
streamGuard
([
this
]()
{
isRunning
.
store
(
false
,
std
::
memory_order_release
);
...
...
@@ -211,14 +211,14 @@ void FaceReconitionHandle::doesItExistEmployee(const cv::Mat &source,std::list<v
ret
=
HF_CreateImageStream
(
&
imageData
,
&
imageSteamHandle
);
if
(
ret
!=
HSUCCEED
)
{
qInfo
()
<<
QString
(
"
image handle error:%1"
).
arg
((
long
)
imageSteamHandle
,
0
,
10
);
qInfo
()
<<
QString
(
"
SN(%1): image handle error:%2"
).
arg
(
sn
).
arg
((
long
)
imageSteamHandle
,
0
,
10
);
return
;
}
HF_MultipleFaceData
multipleFaceData
=
{
0
};
HF_FaceContextRunFaceTrack
(
ctxHandle
,
imageSteamHandle
,
&
multipleFaceData
);
if
(
multipleFaceData
.
detectedNum
<=
0
)
{
qInfo
()
<<
QString
(
"
search 未检测到人脸"
);
qInfo
()
<<
QString
(
"
SN(%1): 未检测到人脸"
).
arg
(
sn
);
return
;
}
...
...
@@ -227,11 +227,12 @@ void FaceReconitionHandle::doesItExistEmployee(const cv::Mat &source,std::list<v
HInt32
featureNum
;
HF_GetFeatureLength
(
ctxHandle
,
&
featureNum
);
for
(
int
j
=
0
;
j
<
multipleFaceData
.
detectedNum
;
++
j
){
qInfo
()
<<
QString
(
"doesItExistEmployee==>面部索引: %1"
).
arg
(
j
);
//qInfo()<<QString("doesItExistEmployee==>面部索引: %1").arg(j);
qDebug
()
<<
QString
(
"SN(%1): 面部索引:%2"
).
arg
(
sn
).
arg
(
j
);
std
::
vector
<
float
>
newfeature
(
featureNum
,
0.0
f
);
ret
=
HF_FaceFeatureExtractCpy
(
ctxHandle
,
imageSteamHandle
,
multipleFaceData
.
tokens
[
j
],
newfeature
.
data
());
if
(
ret
!=
HSUCCEED
)
{
qInfo
()
<<
QString
(
"特征提取出错: %1"
).
arg
(
ret
);
qInfo
()
<<
QString
(
"SN(%1): 特征提取出错:%2"
).
arg
(
sn
).
arg
(
ret
);
HF_ReleaseImageStream
(
imageSteamHandle
);
return
;
}
...
...
@@ -248,13 +249,12 @@ void FaceReconitionHandle::doesItExistEmployee(const cv::Mat &source,std::list<v
HFloat
confidence
;
ret
=
HF_FeaturesGroupFeatureSearch
(
ctxHandle
,
feature
,
&
confidence
,
&
searchIdentity
);
if
(
ret
!=
HSUCCEED
)
{
qInfo
()
<<
QString
(
"搜索失败: %1"
).
arg
(
ret
);
qInfo
()
<<
QString
(
"SN(%1): 搜索失败:%2"
).
arg
(
sn
).
arg
(
ret
);
return
;
}
qInfo
()
<<
QString
(
"搜索置信度: %1"
).
arg
(
confidence
);
qInfo
()
<<
QString
(
"匹配到的tag: %1"
).
arg
(
searchIdentity
.
tag
);
qInfo
()
<<
QString
(
"匹配到的customId: %1"
).
arg
(
searchIdentity
.
customId
);
qInfo
()
<<
QString
(
"SN(%1): 搜索置信度:%2"
).
arg
(
sn
).
arg
(
confidence
);
qInfo
()
<<
QString
(
"SN(%1): 匹配到的tag:%2"
).
arg
(
sn
).
arg
(
searchIdentity
.
tag
);
qInfo
()
<<
QString
(
"SN(%1): 匹配到的customId:%2"
).
arg
(
sn
).
arg
(
searchIdentity
.
customId
);
// Face Pipeline
//printf("人脸特征数量: %d", faceNum);
if
(
confidence
>
configConfidence
)
{
...
...
@@ -275,7 +275,7 @@ void FaceReconitionHandle::doesItExistEmployee(const cv::Mat &source,std::list<v
// printf("image released");
}
else
{
//printf("image release error: %ld", ret);
qInfo
()
<<
QString
(
"image release error: %1"
).
arg
(
ret
);
qInfo
()
<<
QString
(
"SN(%1): image release error:%2"
).
arg
(
sn
).
arg
(
ret
);
}
}
FaceReconitionHandle.h
View file @
1542f525
...
...
@@ -33,7 +33,7 @@ public:
void
setImageChanged
(
bool
imageChanged
);
void
doesItExistEmployee
(
const
cv
::
Mat
&
source
,
std
::
list
<
vides_data
::
faceRecognitionResult
>&
face
);
void
doesItExistEmployee
(
const
QString
&
sn
,
const
cv
::
Mat
&
source
,
std
::
list
<
vides_data
::
faceRecognitionResult
>&
face
);
void
initSourceImageMap
(
std
::
map
<
QString
,
QString
>&
maps
,
int
numberFaces
,
float
confidence
);
...
...
HttpService.cpp
View file @
1542f525
...
...
@@ -354,11 +354,6 @@ vides_data::response *HttpService::httpPostFacePopulation(QByteArray &img,int &h
resp
->
code
=
map
[
"code"
].
toInt
();
resp
->
msg
=
map
[
"message"
].
toString
();
}
else
{
qInfo
()
<<
"httpPostFacePopulation===>"
;
qInfo
()
<<
m_httpClient
.
errorCode
();
qInfo
()
<<
m_httpClient
.
errorString
();
qInfo
()
<<
"httpPostFacePopulation===>end"
;
resp
->
code
=
2
;
resp
->
msg
=
m_httpClient
.
errorCode
();
}
...
...
@@ -511,7 +506,6 @@ vides_data::response *HttpService::httpDeviceConfig(const QString &serialNumber,
QJsonObject
faceConfigObj
=
dataObj
[
"faceConfig"
].
toObject
();
config
.
faceConfig
.
isOn
=
faceConfigObj
[
"isOn"
].
toBool
();
config
.
faceConfig
.
faceNumbers
=
faceConfigObj
[
"faceNumbers"
].
toInt
();
config
.
faceConfig
.
faceFrequency
=
faceConfigObj
[
"faceFrequency"
].
toInt
();
config
.
faceConfig
.
confidence
=
faceConfigObj
[
"confidence"
].
toVariant
().
toFloat
();
config
.
faceConfig
.
updateAt
=
faceConfigObj
[
"updateAt"
].
toVariant
().
toULongLong
();
config
.
faceConfig
.
faceLen
=
faceConfigObj
[
"faceLen"
].
toInt
();
...
...
@@ -542,6 +536,7 @@ vides_data::response *HttpService::httpDeviceConfig(const QString &serialNumber,
QJsonObject
humanConfigObj
=
dataObj
[
"humanConfig"
].
toObject
();
config
.
humanConfig
.
isOn
=
humanConfigObj
[
"isOn"
].
toBool
();
config
.
humanConfig
.
updateAt
=
humanConfigObj
[
"updateAt"
].
toVariant
().
toULongLong
();
config
.
humanConfig
.
faceFrequency
=
humanConfigObj
[
"faceFrequency"
].
toVariant
().
toUInt
();
// 解析 devicesConfig
QJsonObject
devicesConfigObj
=
dataObj
[
"camera"
].
toObject
();
...
...
HumanDetection.cpp
View file @
1542f525
...
...
@@ -77,7 +77,7 @@ void HumanDetection::setHuManParameter(int &uniformColor){
}
//0 人形 1 车形 2 工服
int
HumanDetection
::
findHuManCar
(
const
cv
::
Mat
&
source
,
int
res
,
std
::
map
<
int
,
int
>&
reMap
,
float
&
heightReference
,
std
::
vector
<
vides_data
::
ParkingArea
>
&
currentPlate
)
{
int
HumanDetection
::
findHuManCar
(
const
cv
::
Mat
&
source
,
int
res
,
std
::
map
<
int
,
int
>&
reMap
,
QString
&
sSn
,
float
&
heightReference
,
std
::
vector
<
vides_data
::
ParkingArea
>
&
currentPlate
)
{
thread_time
.
store
(
QDateTime
::
currentMSecsSinceEpoch
(),
std
::
memory_order_release
);
TCV_CameraStream
*
stream
=
TCV_CreateCameraStream
();
...
...
@@ -100,8 +100,7 @@ int HumanDetection::findHuManCar(const cv::Mat &source, int res,std::map<int,int
if
(
res
==
0x00
||
res
==
0x02
)
{
num
=
TCV_HumanDetectorGetNumOfHuman
(
detector
);
qInfo
()
<<
"TCV_HumanDetectorGetNumOfHuman==>"
<<
num
;
qInfo
()
<<
QString
(
"SN(%1): 获取人体数量:%2"
).
arg
(
sSn
).
arg
(
num
);
if
(
num
==
0
)
return
num
;
// 无行人检测结果,提前返回
std
::
vector
<
TCV_ObjectLocation
>
results
(
num
);
TCV_HumanDetectorGetHumanLocation
(
detector
,
results
.
data
(),
num
);
...
...
@@ -133,8 +132,6 @@ int HumanDetection::findHuManCar(const cv::Mat &source, int res,std::map<int,int
}
reMap
[
0x02
]
=
count_no_uniform
;
// 未穿工服的行人数量
reMap
[
0x00
]
=
count_all
;
// 所有满足条件的行人数量
qInfo
()
<<
"count_all==>"
<<
count_all
;
qInfo
()
<<
"count_no_uniform==>"
<<
count_no_uniform
;
num
=
(
res
==
0x00
)
?
count_all
:
count_no_uniform
;
}
...
...
HumanDetection.h
View file @
1542f525
...
...
@@ -16,7 +16,7 @@ public:
float
carShapeConfidence
);
~
HumanDetection
();
int
findHuManCar
(
const
cv
::
Mat
&
source
,
int
res
,
std
::
map
<
int
,
int
>&
reMap
,
int
findHuManCar
(
const
cv
::
Mat
&
source
,
int
res
,
std
::
map
<
int
,
int
>&
reMap
,
QString
&
sSn
,
float
&
heightReference
,
std
::
vector
<
vides_data
::
ParkingArea
>
&
currentPlate
);
void
setHuManParameter
(
int
&
uniformColor
);
...
...
LicensePlateRecognition.cpp
View file @
1542f525
...
...
@@ -82,7 +82,6 @@ void LicensePlateRecognition::oldLicensePlateNumber(const cv::Mat &source,const
}
else
{
type
=
types
[
results
.
plates
[
i
].
type
];
}
qInfo
()
<<
QString
(
"车牌号:%1"
).
arg
(
results
.
plates
[
i
].
code
);
QString
plateResult
=
QString
(
"第%1个,%2,车牌号:%3,置信度:%4,左上角点x坐标:%5,左上角点y坐标:%6,右下角点x坐标:%7,右下角点y坐标:%8"
)
.
arg
(
i
+
1
).
arg
(
type
.
c_str
()).
arg
(
results
.
plates
[
i
].
code
)
.
arg
(
results
.
plates
[
i
].
text_confidence
).
arg
(
results
.
plates
[
i
].
x1
,
0
,
'Q'
,
4
)
...
...
@@ -168,7 +167,6 @@ void LicensePlateRecognition::licensePlateNumber(const cv::Mat &source, QString
newPlate
.
new_color
=
QString
::
fromStdString
(
type
);
QString
car_nuber
=
QString
::
fromUtf8
(
results
.
plates
[
i
].
code
);
replaceWith1And0
(
car_nuber
);
qInfo
()
<<
"I O (i o)大小写替换为 1 0结果:==>"
<<
car_nuber
;
newPlate
.
new_plate
=
car_nuber
;
newPlate
.
text_confidence
=
results
.
plates
[
i
].
text_confidence
;
vides_data
::
ParkingArea
area
;
...
...
LogHandle.h
View file @
1542f525
...
...
@@ -12,7 +12,7 @@
#include <QTextStream>
#include <QTextCodec>
const
int
g_logLimitSize
=
5
;
const
int
g_logLimitSize
=
4
5
;
struct
LogHandlerPrivate
{
LogHandlerPrivate
();
...
...
LogHandler.cpp
View file @
1542f525
...
...
@@ -25,13 +25,13 @@ LogHandlerPrivate::LogHandlerPrivate() {
openAndBackupLogFile
();
// 十分钟检查一次日志文件创建时间
renameLogFileTimer
.
setInterval
(
1000
*
2
);
// TODO: 可从配置文件读取
renameLogFileTimer
.
setInterval
(
1000
*
60
*
10
);
// TODO: 可从配置文件读取
renameLogFileTimer
.
start
();
QObject
::
connect
(
&
renameLogFileTimer
,
&
QTimer
::
timeout
,
[
this
]
{
QMutexLocker
locker
(
&
LogHandlerPrivate
::
logMutex
);
openAndBackupLogFile
();
// 打开日志文件
checkLogFiles
();
// 检测当前日志文件大小
// autoDeleteLog(); // 自动删除30天前的日志
// autoDeleteLog(); // 自动删除30天前的日志
});
// 定时刷新日志输出到文件,尽快的能在日志文件里看到最新的日志
...
...
@@ -91,10 +91,17 @@ void LogHandlerPrivate::openAndBackupLogFile() {
logFile
->
close
();
delete
logOut
;
delete
logFile
;
QDate
renameDate
=
logFileCreatedDate
;
if
(
logFileCreatedDate
==
QDate
::
currentDate
())
{
renameDate
=
QDate
::
currentDate
().
addDays
(
-
1
);
// 设置为昨天的日期
}
QString
newLogPath
=
logDir
.
absoluteFilePath
(
logFileCreated
Date
.
toString
(
"yyyy-MM-dd.log"
));
QFile
::
rename
(
logPath
,
newLogPath
);
// 将原始日志文件重命名为新的文件名
QString
newLogPath
=
logDir
.
absoluteFilePath
(
rename
Date
.
toString
(
"yyyy-MM-dd.log"
));
//
QFile::rename(logPath, newLogPath); // 将原始日志文件重命名为新的文件名
QFile
::
copy
(
logPath
,
newLogPath
);
QFile
::
remove
(
logPath
);
logFile
=
new
QFile
(
logPath
);
logOut
=
(
logFile
->
open
(
QIODevice
::
WriteOnly
|
QIODevice
::
Text
|
QIODevice
::
Append
))
?
new
QTextStream
(
logFile
)
:
nullptr
;
logFileCreatedDate
=
QDate
::
currentDate
();
...
...
@@ -105,8 +112,8 @@ void LogHandlerPrivate::openAndBackupLogFile() {
// 检测当前日志文件大小
void
LogHandlerPrivate
::
checkLogFiles
()
{
// 如果 protocal.log 文件大小超过5M,重新创建一个日志文件,原文件存档为yyyy-MM-dd_hhmmss.log
if
(
logFile
->
size
()
>
1024
*
g_logLimitSize
)
{
// 如果 protocal.log 文件大小超过5
5
M,重新创建一个日志文件,原文件存档为yyyy-MM-dd_hhmmss.log
if
(
logFile
->
size
()
>
1024
*
1024
*
g_logLimitSize
)
{
logFile
->
flush
();
logFile
->
close
();
delete
logOut
;
...
...
@@ -114,7 +121,11 @@ void LogHandlerPrivate::checkLogFiles() {
QString
logPath
=
logDir
.
absoluteFilePath
(
"today.log"
);
// 日志的路径
QString
newLogPath
=
logDir
.
absoluteFilePath
(
logFileCreatedDate
.
toString
(
"yyyy-MM-dd.log"
));
QFile
::
rename
(
logPath
,
newLogPath
);
// QFile::rename(logPath, newLogPath);
QFile
::
copy
(
logPath
,
newLogPath
);
QFile
::
remove
(
logPath
);
logFile
=
new
QFile
(
logPath
);
logOut
=
(
logFile
->
open
(
QIODevice
::
WriteOnly
|
QIODevice
::
Text
|
QIODevice
::
Append
))
?
new
QTextStream
(
logFile
)
:
NULL
;
logFileCreatedDate
=
QDate
::
currentDate
();
...
...
MediaFaceImage.cpp
View file @
1542f525
...
...
@@ -230,7 +230,7 @@ int MediaFaceImage::ToFile(const char* pFileName, const void* pData, int nLength
// return pInOutBufferSize; // pOutBuffer由智能指针管理,此处无需手动释放
//}
int
MediaFaceImage
::
FaceImageCallBack
(
XSDK_HANDLE
hMedia
,
int
nChannel
,
cv
::
Mat
&
image
)
{
int
MediaFaceImage
::
FaceImageCallBack
(
XSDK_HANDLE
hMedia
,
int
nChannel
,
cv
::
Mat
&
image
,
QString
&
sSn
)
{
const
int
BufferSize
=
1024
*
1024
*
2
;
// 缓冲区大小
image
.
release
();
// 释放之前的图像
std
::
unique_ptr
<
unsigned
char
[]
>
pOutBuffer
(
new
unsigned
char
[
BufferSize
]);
// 智能指针管理内存
...
...
@@ -238,7 +238,7 @@ int MediaFaceImage::FaceImageCallBack(XSDK_HANDLE hMedia, int nChannel, cv::Mat
int
ret
=
XSDK_DevSnapSyn
(
hMedia
,
nChannel
,
""
,
pOutBuffer
.
get
(),
&
pInOutBufferSize
);
if
(
ret
<
0
||
pInOutBufferSize
<=
0
)
{
qInfo
()
<<
"
同步设备端抓图失败"
;
qInfo
()
<<
sSn
<<
":
同步设备端抓图失败"
;
return
-
1
;
}
...
...
@@ -249,12 +249,12 @@ int MediaFaceImage::FaceImageCallBack(XSDK_HANDLE hMedia, int nChannel, cv::Mat
try
{
cv
::
Mat
decodedImage
=
cv
::
imdecode
(
buffer
,
cv
::
IMREAD_UNCHANGED
);
if
(
decodedImage
.
empty
())
{
qInfo
()
<<
"
图像解码失败"
;
qInfo
()
<<
sSn
<<
":
图像解码失败"
;
return
-
1
;
}
image
=
std
::
move
(
decodedImage
);
}
catch
(
const
cv
::
Exception
&
e
)
{
qInfo
()
<<
"
图像解码过程中捕获异常:"
<<
e
.
what
();
qInfo
()
<<
sSn
<<
":
图像解码过程中捕获异常:"
<<
e
.
what
();
return
-
1
;
}
...
...
MediaFaceImage.h
View file @
1542f525
...
...
@@ -18,7 +18,7 @@ public:
static
MediaFaceImage
*
getInstance
();
// 单例模式获取实例的静态成员函数
void
ParserImageData
(
const
unsigned
char
*
pData
,
int
nDataLen
,
char
*
pJpg
,
int
*
nJpgLen
,
char
*
pJson
);
int
FaceImageCallBack
(
XSDK_HANDLE
hMedia
,
int
nChannel
,
cv
::
Mat
&
image
);
int
FaceImageCallBack
(
XSDK_HANDLE
hMedia
,
int
nChannel
,
cv
::
Mat
&
image
,
QString
&
sSn
);
int
CameraImage
(
XSDK_HANDLE
hMedia
,
int
nChannel
,
std
::
vector
<
uchar
>
&
buffer
);
int
ToFile
(
const
char
*
pFileName
,
const
void
*
pData
,
int
nLenght
);
...
...
ParkingSpaceInfo.cpp
View file @
1542f525
...
...
@@ -10,7 +10,6 @@ ParkingSpaceInfo::ParkingSpaceInfo(){
}
ParkingSpaceInfo
::~
ParkingSpaceInfo
(){
qInfo
()
<<
"ParkingSpaceInfo:关闭"
;
}
void
ParkingSpaceInfo
::
addQueue
(
RecognizedInfo
&
info
){
QMutexLocker
locker
(
&
queueMutex
);
...
...
VidesData.h
View file @
1542f525
...
...
@@ -250,7 +250,6 @@ struct Camera {
struct
FaceConfig
{
bool
isOn
;
int
faceNumbers
;
uint64
faceFrequency
;
float
confidence
;
int
faceLen
;
quint64
updateAt
;
...
...
@@ -281,7 +280,7 @@ struct UniformConfig {
};
struct
HumanConfig
{
bool
isOn
;
int
humanDetectionLen
;
uint64
faceFrequency
;
quint64
updateAt
;
};
...
...
gamera_videos.pro
View file @
1542f525
...
...
@@ -13,7 +13,8 @@ TEMPLATE = app
# deprecated API in order to know how to port your code away from it.
DEFINES
+=
QT_DEPRECATED_WARNINGS
DEFINES
+=
APP_VERSION
=
\\\
"1.3.2\\\"
DEFINES
+=
QT_MESSAGELOGCONTEXT
DEFINES
+=
QT_NO_DEBUG_OUTPUT
QMAKE_LIBDIR
+=
/
usr
/
local
/
lib
INCLUDEPATH
+=/
usr
/
local
/
include
/
opencv4
...
...
@@ -24,6 +25,9 @@ INCLUDEPATH+=/usr/local/include/human
INCLUDEPATH
+=/
usr
/
local
/
include
/
CImg
INCLUDEPATH
+=/
usr
/
local
/
include
/
mqtt
# 禁用所有警告
QMAKE_CXXFLAGS
+=
-
w
...
...
mainwindow.cpp
View file @
1542f525
...
...
@@ -557,7 +557,8 @@ void MainWindow::startCamera(const QString &httpurl){
reStatus
.
camera_info_list
.
push_front
(
camera_info
);
__uint8_t
new_algorithm
=
intToUint8t
(
devConfig
.
faceConfig
.
isOn
,
devConfig
.
licensePlateConfig
.
isOn
,
devConfig
.
uniformConfig
.
isOn
,
devConfig
.
humanConfig
.
isOn
);
uint64
face_frequency
=
devConfig
.
humanConfig
.
faceFrequency
;
offlineCameraHandle
->
initFaceFrequency
(
face_frequency
);
offlineCameraHandle
->
cameraParameterUpdate
(
devConfig
);
offlineCameraHandle
->
initAlgorithmPermissions
(
new_algorithm
);
if
(
!
offlineCameraHandle
->
compareLists
(
device
.
areas
)){
...
...
@@ -724,7 +725,6 @@ void MainWindow::initEncodeToString(QString &enCodeJson) {
}
bool
MainWindow
::
iniWorkSpVMn
(
vides_data
::
responseGb28181
*
gb28181
,
QString
&
workSpWMn
,
QString
&
sn
){
qInfo
()
<<
"iniWorkSpVMn=="
<<
sn
;
QString
jsonfile
=
QCoreApplication
::
applicationDirPath
()
+
"/camera_config.json"
;
bool
isEqual
=
true
;
...
...
@@ -975,8 +975,6 @@ __uint8_t MainWindow::intToUint8t(bool faceAlgorithm, bool licensePlateAlgorithm
// 车牌识别对应最低位(第0位)
result
|=
(
licensePlateAlgorithm
?
1
:
0
);
qInfo
()
<<
"算法结果"
<<
result
;
return
result
;
}
void
MainWindow
::
initCameras
(
vides_data
::
cameraParameters
&
parameter
,
vides_data
::
responseConfig
&
devConfig
,
const
std
::
list
<
vides_data
::
responseArea
>&
areas
,
std
::
list
<
vides_data
::
requestCameraInfo
>&
camera_info_list
){
...
...
@@ -988,9 +986,10 @@ void MainWindow::initCameras(vides_data::cameraParameters ¶meter,vides_data:
CameraHandle
*
cameraHandle
=
new
CameraHandle
(
parameter
.
sDevId
,
parameter
.
httpUrl
,
parameter
.
sSn
,
parameter
.
channel
,
image_save
,
heightReference
,
devConfig
);
int
sdk_handle
=
cameraHandle
->
sdkDevLoginSyn
(
parameter
.
sDevId
,
parameter
.
nDevPort
,
parameter
.
sUserName
,
parameter
.
sPassword
,
3000
);
qInfo
()
<<
"句柄为2:"
<<
sdk_handle
;
qDebug
()
<<
QString
(
"SN(%1): 句柄为%2"
).
arg
(
parameter
.
sSn
).
arg
(
sdk_handle
);
if
(
sdk_handle
<=
0
){
qInfo
()
<<
"登录失败"
;
qInfo
()
<<
QString
(
"SN(%1): 登录失败"
).
arg
(
parameter
.
sSn
)
;
return
;
}
mediaFaceImage
->
setMap
(
sdk_handle
,
cameraHandle
);
...
...
@@ -1002,7 +1001,7 @@ void MainWindow::initCameras(vides_data::cameraParameters ¶meter,vides_data:
int
synTime
=
devConfig
.
camera
.
devSnapSynTimer
;
uint64
face_frequency
=
devConfig
.
face
Config
.
faceFrequency
;
uint64
face_frequency
=
devConfig
.
human
Config
.
faceFrequency
;
float
carConfidenceMax
=
devConfig
.
licensePlateConfig
.
carConfidenceMax
;
float
carConfidenceMin
=
devConfig
.
licensePlateConfig
.
carConfidenceMin
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment