VisionMaster 二次开发获取图像,本地保存,COM组件显示
vision
pytorch/vision: 一个基于 PyTorch 的计算机视觉库,提供了各种计算机视觉算法和工具,适合用于实现计算机视觉应用程序。
项目地址:https://gitcode.com/gh_mirrors/vi/vision
免费下载资源
·
1.在VM中新建一个方案,只有一个 图像源
2.Qt的Pro文件添加库,只要这一个就行了
INCLUDEPATH+='D:/HIKVISION/VM4.2.0/VisionMaster4.2.0/Development/V4.x/Includes'
LIBS+=-L'D:/HIKVISION/VM4.2.0/VisionMaster4.2.0/Development/V4.x/Libraries/win64\C' -liMVS-6000PlatformSDK
3.头文件
建议放在预编译头文件里,这些文件编译时间有点长,暂时用到这么多
#include<IVmSolution.h>
#include<IVmProcedure.h>
#include<VMException.h>
#include<IVmImageSource.h>
#include<IVmDynamicIoDefine.h>
4.代码中加载方案,然后获取图像源结果,并在Qt中使用qaxWidget调用VM的组件显示图像,
widget->dynamicCall("GetObjectPointer()");
IVmSolution *solution = LoadSolution("G:/Temp/VMQTTest/solution.sol", "");
ImageSourceModuleTool *sorceTool = (ImageSourceModuleTool *)(*solution)["流程1.图像源1"];
这几行代码的先后顺序有坑
#include"pch.h"
#include<QAxWidget>
#include<QApplication>
using namespace VisionMasterSDK;
using namespace VisionMasterSDK::VmSolution;
using namespace VisionMasterSDK::VmProcedure;
using namespace VisionMasterSDK::ImageSourceModule;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//初始化COM组件,VmRenderControlWinform
QAxWidget *widget = widget = new QAxWidget;
widget->setControl("{313241a6-62f9-464b-bede-f514827e2f4b}");
//这里有坑,在方案之前调用没问题,如果在后面调用就要在获取图像源之后,具体可测试
widget->dynamicCall("GetObjectPointer()");
//获取解决方案
IVmSolution *solution = LoadSolution("G:/Temp/VMQTTest/solution.sol", "");
if(solution)
{
//运行一次方案
solution->Run();
//得到图像源模块
ImageSourceModuleTool *sorceTool = (ImageSourceModuleTool *)(*solution)["流程1.图像源1"];
if(sorceTool)
{
//获取图像源结果
ImageSourceResults *result = sorceTool->GetResult();
if(result)
{
//得到图像信息
ImageBaseData baseData = result->GetImageData();
qlonglong pData = (qlonglong)(&baseData);
widget->dynamicCall("SetImageSourceData(qlonglong)", pData);
//这里用VM的组件显示图像
widget->show();
}
}
DestroySolutionInstance(solution);
}
return a.exec();
}
5.QAXWidget使用的UUID在注册表能查到,使用Qt中UI框架更容易找到
注册表里也能找到
Windows自带的工具oleview.exe也能找到
6.运行效果
7.还可以使用QImage将图像保存在本地
#include"pch.h"
#include<QUrl>
#include<QTime>
#include<QImage>
#include<QApplication>
#include<QDesktopServices>
using namespace VisionMasterSDK;
using namespace VisionMasterSDK::VmSolution;
using namespace VisionMasterSDK::VmProcedure;
using namespace VisionMasterSDK::ImageSourceModule;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//获取解决方案
IVmSolution *solution = LoadSolution("G:/Temp/VMQTTest/solution.sol", "");
if(solution)
{
//运行一次方案
solution->Run();
//得到图像源模块
ImageSourceModuleTool *sorceTool = (ImageSourceModuleTool *)(*solution)["流程1.图像源1"];
if(sorceTool)
{
//获取图像源结果
ImageSourceResults *result = sorceTool->GetResult();
if(result)
{
//得到图像信息
ImageBaseData baseData = result->GetImageData();
MvdPixelFormat format = baseData.Pixelformat; //像素格式,这里已知MVD_PIXEL_MONO_08
int width = baseData.Width; //图像宽度
int height = baseData.Height; //图像高度
uchar *data = (uchar *)baseData.ImageData; //图像数据
QImage image(data, width, height, QImage::Format_Grayscale8);
//如果图像有效,保存并使用默认软件显示
if(!image.isNull())
{
QString path = "../" + QTime::currentTime().toString("hhmmss") + ".jpg";
if(image.save(path))
{
QDesktopServices::openUrl(QUrl::fromLocalFile(path));
}
}
}
}
DestroySolutionInstance(solution);
}
return a.exec();
}
8.上面的代码保存图像成功后使用默认软件打开图像,效果如下
GitHub 加速计划 / vi / vision
15.85 K
6.89 K
下载
pytorch/vision: 一个基于 PyTorch 的计算机视觉库,提供了各种计算机视觉算法和工具,适合用于实现计算机视觉应用程序。
最近提交(Master分支:3 个月前 )
518ee93d
7 天前
7d077f13
8 天前
更多推荐
已为社区贡献2条内容
所有评论(0)