最近在做一个有关labview的项目,其中涉及到了图像处理部分,安装了对应的labview Vision工具箱,但是苦于只有英文版,实在不怎么友好,同时网上并没有搜集到很硬的相关教程,所以考虑用labview与C++的混合编程,这样便可利用Opencv来做图像处理,labview做其他数据处理和界面显示(巧妙的就绕过了MFC。。。)。
具体实现方法是用C++封装Dll动态链接库,再利用labview调用该Dll便可实现。
这里先推荐一些其他CSDN博主给出的具体实现方法,其中就有涉及到调用Opencv的例程。
相关链接如下:
行歌er :LabVIEW学习笔记(九)——调用外部DLL
blank_downdowndown:labview调用VS2015生成的DLL
tomorrowNeverComes:Labview调用dll参数设置:结构体、指针、数组、簇
akuo430:labview调用VC++生成的动态链接库DLL
聪聪那年_:labview在机器视觉中的应用——调用opencv图像处理函数(这篇文章有多名博主发过,不知道谁才是原博主。。。。)
bgbgxia:Labview调用C++ dll之字符串数组传递
过几天会把自己的相关程序做一整理,在这里分享。
2019年5月16日
这两天把自己的小程序做了整理,在这里和大家分享,同时也做一个记录。
首先需要说明我的程序运行环境:
VS2015;Opencv3.1.0;Labview2018 64bit;NI Vision Development Module 64bit;
注: 由于Opencv3.1.0没有32bit版本,所以Dll封装时需要在x64环境下完成,这就要求所用的Labview也必须是64bit版本才可以正常调用,否则调用会失败。换句话说,Dll的环境要和Labview一致即可调用。
在这里附上NI Vision Development Module 2018 下载地址。
这次例程是要实现用Labview调用Dll动态链接库,该库是用Opencv编写的一个基于Hog+SVM的图像分类器(分类器文件和图像会在文末给出)。具体功能是将分类器分类结果显示在Labview前面板上。
具体操作如下:
Step 1 Dll封装:
建立Win32项目
按照图片所示设置后点击完成
在.cpp种出入代码(注意,不是dllmian.cpp,而是以项目名称命名的那个cpp),最后点击“生成解决方案”即可完成Dll封装。
#include "stdafx.h"
#include
using namespace cv::ml;
using namespace cv;
using namespace std;
_declspec(dllexport) void svm_hog_classification(int *labelt)
{
cv::HOGDescriptor hog(cv::Size(32, 320), cv::Size(16, 16), cv::Size(8, 8), cv::Size(8, 8), 9);
Mat src = imread("待分类图像.bmp");
Ptr<SVM> svm = SVM::load<SVM>("SVM_HOG1.xml");
Mat src3;
GaussianBlur(src, src3, Size(5, 5), 0, 0); //高斯滤波
cvtColor(src3, src3, CV_BGR2GRAY); //灰度化
cv::resize(src3, src3, cv::Size(32, 320)); //resize图片
std::vector<float> descriptors;
hog.compute(src3, descriptors, cv::Size(8, 8));
cv::Mat testDescriptor = cv::Mat::zeros(1, descriptors.size(), CV_32FC1);
for (size_t i = 0; i < descriptors.size(); i++)
{
testDescriptor.at<float>(0, i) = descriptors[i];
}
*labelt = svm->predict(testDescriptor);
}
Step 2 Labview程序搭建
添加Dll调用节点
双击节点加载生成的Dll文件(路径见下图),并在函数名种选择分类函数
在参数设置中,按下图所示操作
搭建Labview程序如图所示(是这么个意思就行。。。。。。界面这种东西。。。。够用就行了。。。。)
如果顺利完成了以上操作,接下来点击运行程序即可在“识别结果”中看到对应的数值化分类结果(-1或1,对应两种不同的图像类型)。
文中所涉及的分类及待分类图片下载地址:
分类器及图片下载