Тестовая платформа:
Ubuntu 18.04 на виртуальной машине VMWare
1. Информация о камере Hikvision
Загрузка данных: https://www.hikrobotics.com/cn.
Специальное программное обеспечение:
MVS — это официальное программное обеспечение Hikvision для управления камерой, реализованное с использованием SDK. Пакет компонентов Runtime представляет собой библиотеку и драйвер разработки SDK.
Я использовал две версии программного обеспечения, показанные на рисунке. После фактической установки среда выполнения MVS была 4.3.0. Позже я использовал библиотеки и файлы заголовков в MVS. Содержимое некоторых примеров можно просмотреть в папке doc. Официальные примеры более авторитетны.
Результаты после установки MVS:
Я использовал установку сценария вместо файла deb.
Шаги установки:
1>РазархивироватьMVS_STD_GML_V2.1.2_231225.zip
2>РазархивироватьMVS-2.1.2_x86_64_20231225.tar.gz
3>ВходитьMVS-2.1.2_x86_64_20231225середина,Просмотр установочных файлов INSTALL
После выполнения третьего шага нет необходимости проверять четвертый шаг: MVS запускается напрямую, образ может быть получен, и среда настроена нормально.
2. Отображение изображений с камеры с помощью Qt
Главное здесь – построение среды.
Qt использует только библиотеку libMvCameraControl.so, и программа может полностью использовать эту библиотеку.
Посмотреть официальные примерыTrigger_ImageCallback.cpp,Обнаружено, что связана только одна библиотека — libMvCameraControl.so.,MV_CC_Initialize() не определен после компиляции,Судя по предыдущему опыту, эта функция не использовалась.,Тогда сначала заблокируйте его и не используйте.,Это первая ловушка. Затем полностью скопируйте предыдущую программу Windows,компилироватьOK。бегать,Сообщить об ошибке,Невозможно выполнить перечисление на устройство камеры,Сообщить об Верный код,0x8000000,Не удалось выполнить динамический импорт DLL.,проверено,Добавлены все библиотеки из /opt/MVS/lib/64/ в среду выполнения.,Вы можете обратиться к процессу настройки opencv3 в прошлый раз.,Вторая яма.
Можно запустить его еще раз.
Эффект такой:
Часть кода:
//Распечатываем модель и серийный номер камеры
qDebug() << QString::fromLocal8Bit(reinterpret_cast<char*>(pDeviceInfo->SpecialInfo.stGigEInfo.chModelName));
qDebug() << QString::fromLocal8Bit(reinterpret_cast<char*>(pDeviceInfo->SpecialInfo.stGigEInfo.chSerialNumber));
//Идентификация цветной камеры
if('C' == pDeviceInfo->SpecialInfo.stGigEInfo.chModelName[12]){
m_isColor = true;
qDebug() << "==============color=================";
}
// Выберите устройство и создайте дескриптор
nRet = MV_CC_CreateHandle(&handle, stDeviceList.pDeviceInfo[nIndex]);
if (MV_OK != nRet){
printf("MV_CC_CreateHandle fail! nRet [%x]\n", nRet);
return false;
}
// Включите устройство
nRet = MV_CC_OpenDevice(handle);
if (MV_OK != nRet){
printf("MV_CC_OpenDevice fail! nRet [%x]\n", nRet);
return false;
}
// ch: оптимальный размер пакета для обнаружения сети (действительно только для камер GigE)
if (stDeviceList.pDeviceInfo[nIndex]->nTLayerType == MV_GIGE_DEVICE){
int nPacketSize = MV_CC_GetOptimalPacketSize(handle);
if (nPacketSize > 0){
nRet = MV_CC_SetIntValue(handle,"GevSCPSPacketSize",nPacketSize);
if(nRet != MV_OK)
{
printf("Warning: Set Packet Size fail nRet [0x%x]!\n", nRet);
}
}
else{
printf("Warning: Get Packet Size fail nRet [0x%x]!\n", nPacketSize);
}
}