我将使用 Qt(c++) 上的 sdk 在海康相机中使用人脸识别功能。 我确实尝试将人脸数据上传到海康威视库,但它不起作用。
这是我的代码。
strXml = "<?xml version='1.0' encoding='UTF-8'?><FaceAppendData><name>%2</name><bornTime>%1</bornTime><sex>%3</sex><province>65</province><certificateType>ID</certificateType><certificateNumber>%4</certificateNumber></FaceAppendData>"
NET_DVR_SEND_PARAM_IN m_struSendParam = {0};
pSendAppendData = new BYTE[strXml.size()];
memcpy(pSendAppendData, strXml.toStdString().c_str(), strXml.size());
m_struSendParam.dwSendAppendDataLen = strXml.size();
m_struSendParam.pSendAppendData = pSendAppendData;
//set pic data
QFile file(m_strFileName);
if (!file.open(QIODevice::ReadOnly)) {
QMessageBox::warning(this, "File Read Error", "Cant' read this file.");
return;
}
//pSendPicData = new BYTE[file.size()];
QByteArray byteData = file.readAll();
m_struSendParam.dwSendDataLen= byteData.size();
//memcpy(pSendPicData, byteData.data(), file.size());
file.close();
m_struSendParam.pSendData = (BYTE*)byteData.data();
m_struSendParam.byPicType = 1;
m_struSendParam.byPicURL = 0;
if (NET_DVR_UploadSend(m_lUploadHandle, &m_struSendParam, NULL) < 0){
QMessageBox::warning(this, "Error", QString("Upload failed.\nError Code: %1").arg(NET_DVR_GetLastError()));
}while (1) {
LONG iStatus = getUploadState();
if (iStatus == 1) {//Uploaded
stopUploadData();
accept();
}
if (iStatus >= 3) {//Upload failed
stopUploadData();
QMessageBox::warning(this, "ERROR", QString("Upload Failed. Status Code: %1").arg(iStatus));
break;
}
}
结果是“上传失败”。
有什么不正确的地方请帮助我。 谢谢你。