最近一直为机器人做一个控制系统,需要同时搭载Tensorflow和海康网络摄像头,当然python是最好的开发工具,搭载tensorflow比较容易,但是搭载海康摄像头,一直找不到如何去做。后来又想到java,海康摄像头解决了,调用tensorflow训练模型又有很多的坑。暂时先用Qt做了,后面再想办法。只能用tenssorflow的ssd_mobilenet模型。opencv官方也没有更新其他的模型。
这是完成后的Qt控制系统界面。
关于海康摄像头的配置,完全看的海康的官方文档。
INCLUDEPATH+= D:\OpenCV\include\
D:\OpenCV\include\opencv\
D:\OpenCV\include\opencv2\
D:\CH-HCNetSDK_32\includes\
D:\CH-HCNetSDK_32\libs\
D:\CH-HCNetSDK_32\libs\HCNetSDKCom\
D:\CH-HCNetSDK_32\libs\ClientDemoDll\
LIBS += D:\OpenCV\x86\mingw\lib\libopencv_*.a\
D:\CH-HCNetSDK_32\libs\HCNetSDK.lib\
D:\CH-HCNetSDK_32\libs\PlayCtrl.lib\
D:\CH-HCNetSDK_32\libs\HCCore.lib\
void Robot::convexImage()
{
LONG lRealHandle=0;
NET_DVR_Init();
//设置连接时间与重连时间
NET_DVR_SetConnectTime(2000, 1);
NET_DVR_SetReconnect(10000, true);
if(bPlaying)
{
NET_DVR_StopRealPlay(lRealHandle);
NET_DVR_Logout_V30(lUserID);
lRealHandle=0;
lUserID=0;
bPlaying=false;
}
else
{
//注册设备
NET_DVR_DEVICEINFO_V30 struDeviceInfo;
//memset(&struDeviceInfo, 0, sizeof(NET_DVR_DEVICEINFO_V30));
lUserID = NET_DVR_Login_V30("10.20.15.96", 8000, "admin", "admin12345", &struDeviceInfo);
if(lUserID < 0)
{
qDebug()<<"login Err="<<NET_DVR_GetLastError();
return;
//NET_DVR_Cleanup();
}
NET_DVR_PREVIEWINFO struPlayInfo;
//启动预览
//NET_DVR_CLIENTINFO tmpclientinfo={0};
struPlayInfo.hPlayWnd =(HWND)ui->label_5->winId();
struPlayInfo.lChannel = 1; //预览通道
struPlayInfo.dwStreamT