labview调用opencv 如何封装dll labview图像转到opencv图像

2024-06-02 03:08

本文主要是介绍labview调用opencv 如何封装dll labview图像转到opencv图像,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

labview 视觉全网最精简零基础全套视频教程

请扫码助教获取教程

http://t.elecfans.com/c801.html

 

第一篇博客当中说了Labview 的优势,其中就有一项就是可以和Matlab和Opencv混合编程,今天就说一下用Labview调用Opencv,当然网上也有人分享出来怎么去做这个动态链接库,但是针对于图像处理的还不多,至少我看到的都是调用windows的动态链接库,其实也都很简单就是把一维的处理变成二维的处理,网上也有不少例程,我在这个过程当中也因为粗心大意遇到一些问题,今天就把这块详细的说一说,每一步都有图,都有解释。

今天主要用的函数就是下面这个

调用库函数,双击之后你会发现有个地方是需要输入库的地址的,也就说你要有自己的库让Lv来调用,而这个库,我们用opencv的函数去写,然后用Lv来调用,这就是所谓的混合编程了。下一步就是要写自己的图相处理的库函数。我用的是VS2013,建立一个dll的工程。看图说话。

这个在百度知道里边有详细的方法,所以我就直接上代码了。。 很简单的一个功能,先进行方框滤波,然后边缘检测,我就是随便弄的一个处理过程,说明问题就好,先看一下用VS运行之后的效果。

#include <opencv2\opencv.hpp>
using namespace cv;
#define WINDOW_NAME1 "[原始图片]"
#define WINDOW_NAME2 "[效果窗口]"
 
Mat g_srcImage; Mat g_templateImage; Mat g_resultImage;
int g_nMatchMethod;
int g_nMaxTrackbarnum = 5;
 
void on_Matching(int, void*);
int main()
{
    Mat image = imread("333.png");
    Mat temp;
    cvtColor(image, image, CV_BGR2GRAY);
    boxFilter(image, image,-1,Size(5,5));
    Canny(image, image, 150, 100, 3);
 
    imshow("2", image);
    //imwrite("2.jpg", image);
    waitKey(0);
 
 
 
}


没错就是以前用的图片就拿出来用了,能说明问题就好,在新建的dll库中添加这段代码。你会发现非常的简单了。

#include <opencv2\opencv.hpp>
using namespace cv;
 
 
 
_declspec(dllexport)  void add2(int rows, int cols, unsigned __int8 *data)
{
    Mat image_src(rows,cols, CV_8U, &data[0]);
    /* Insert code here */
    Mat temp;
    boxFilter(image_src, temp, -1, Size(5, 5));
 
    Canny(temp, image_src, 150, 100, 3);
 
 
 
}
没错就是这样了。这里边注意几个问题,就是输出dll比我们正常编程序在函数前面会有dllesport,字面意思也就是dll输出了,当然还有输入就是dllimport,具体为什么这样在http://www.cnblogs.com/paopao/archive/2006/05/08/393924.aspx这博客当中有很好的说明了,我就不赘述了,还有一点就是我们要输入一个图像,而Lv中的图像数据是有自己的结构的,而opencv中也有Mat结构,他们俩的联系就是数组了,所以我们的图像输入变量就必须是个数组指针,把这个数组的数据给opencv的Mat结构,这样就把他们两个联系起来,其实很简单,就是数据结构的问题,当然后来数据结构的问题也是困扰我最久的问题,这里边很多细节细节。滤波和边缘检测的这两个函数要求图像必须是灰度图像,所以定义的data是8位无符号的数据类型,等下在Lv中也有相应的设置,还有一个问题就是,很多人可能会说我的这个函数没有输出,确实没有输出,因为我把最终的图像又还给了输入的图像,这样反正就是少了一个参数,如果你要是写比较复杂的函数,其实中间变量temp就可以充分发挥作用了,只要把最终结果给image就可以。这个函数编译一下就OK了,在Debug文件夹下会发现一个dll文件。

这个就是我们做好的函数库,下面来看一下Lv中的设置。

第一页需要修改这两个地方。不用说了,很简单。

图像行列都是有符号32位,而图像数据是无符号8位的数据,要跟我们库函数中的定义保持一致。确定就可以,确定之后发现多了三个输入量,

输出就直接连data就可以了,因为在库函数当中我们把最终结果,给了data,前面板就可以看到最终图像,跟我们在opencv当中的效果是一样的。
--------------------- 
作者:聪聪那年_ 
来源:CSDN 
原文:https://blog.csdn.net/woshilicong33/article/details/54178091 
版权声明:本文为博主原创文章,转载请附上博文链接!

这篇关于labview调用opencv 如何封装dll labview图像转到opencv图像的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1022860

相关文章

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到

python如何调用java的jar包

《python如何调用java的jar包》这篇文章主要为大家详细介绍了python如何调用java的jar包,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录一、安装包二、使用步骤三、代码演示四、自己写一个jar包五、打包步骤六、方法补充一、安装包pip3 install

Python如何将OpenCV摄像头视频流通过浏览器播放

《Python如何将OpenCV摄像头视频流通过浏览器播放》:本文主要介绍Python如何将OpenCV摄像头视频流通过浏览器播放的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完... 目录方法1:使用Flask + MJPEG流实现代码使用方法优点缺点方法2:使用WebSocket传输视

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

qt5cored.dll报错怎么解决? 电脑qt5cored.dll文件丢失修复技巧

《qt5cored.dll报错怎么解决?电脑qt5cored.dll文件丢失修复技巧》在进行软件安装或运行程序时,有时会遇到由于找不到qt5core.dll,无法继续执行代码,这个问题可能是由于该文... 遇到qt5cored.dll文件错误时,可能会导致基于 Qt 开发的应用程序无法正常运行或启动。这种错

电脑提示xlstat4.dll丢失怎么修复? xlstat4.dll文件丢失处理办法

《电脑提示xlstat4.dll丢失怎么修复?xlstat4.dll文件丢失处理办法》长时间使用电脑,大家多少都会遇到类似dll文件丢失的情况,不过,解决这一问题其实并不复杂,下面我们就来看看xls... 在Windows操作系统中,xlstat4.dll是一个重要的动态链接库文件,通常用于支持各种应用程序