【学习OpenCV】通过DLL实现图像数据从.dat导入Mat
2014-09-04 16:15
543 查看
目的:主要为了将C++的图像处理部分交给C#界面,特此学习怎么用DLL。
一、生成DLL
1、在vs中创建名为datFile的dll项目,设置包含目录和库目录为opencv路径
2、编写datFile类的头文件和实现
datFile.h
分别添加到项目的头文件和源文件中,编译,获得datFile.dll和datFile.lib
二、调用DLL
1、创建名为testDll的控制台项目,设置包含目录和库目录为opencv路径
2、把datFile.cpp拷贝至本目录并添加头文件
3、编写测试代码。
testDll.cpp
编译,得到testDll.exe
4、将datFile.dll和相关的opencv的dll(包括tbb的lib)与testDll.exe放在同一个文件夹里,那么在别的没有部署opencv的机器上也可以运行了
一、生成DLL
1、在vs中创建名为datFile的dll项目,设置包含目录和库目录为opencv路径
2、编写datFile类的头文件和实现
datFile.h
#ifndef DATFILE_H #define DATFILE_H #include <iostream> #include <fstream> #include "opencv2/highgui/highgui.hpp" #include "opencv2/gpu/gpu.hpp" #include "opencv2/contrib/contrib.hpp" //所用到的头文件 #pragma comment( lib, "opencv_core249d.lib" ) #pragma comment( lib, "opencv_highgui249d.lib" ) #pragma comment( lib, "opencv_imgproc249d.lib" ) #pragma comment( lib, "opencv_gpu249d.lib" ) #pragma comment( lib, "opencv_contrib249d.lib" ) //所用到的lib using namespace std; using namespace cv; //命名空间 typedef int16_t datasize; //图像数据大小 class _declspec(dllexport) datFile //类声明,dllexport表示从dll中导出类 { public: void read(const char* filename, Mat& src); //从.dat导出数据 int16_t height; int16_t width; //图像尺寸 }; #endifdatFile.cpp
#include "stdafx.h" #include "datFile.h" void datFile::read(const char* filename, Mat& src) { <span style="white-space:pre"> </span>//输入原始数据 ifstream datfile(filename, ios::in|ios::binary); <span style="white-space:pre"> </span>datfile.read ((char*)&height, sizeof(int16_t)); datfile.read ((char*)&width, sizeof(int16_t)); src.create(height, width, CV_16UC1); datfile.read ((char*)src.data, height*width*sizeof(datasize)); <span style="white-space:pre"> </span>datfile.close(); }
分别添加到项目的头文件和源文件中,编译,获得datFile.dll和datFile.lib
二、调用DLL
1、创建名为testDll的控制台项目,设置包含目录和库目录为opencv路径
2、把datFile.cpp拷贝至本目录并添加头文件
3、编写测试代码。
testDll.cpp
#include "stdafx.h" #include "readDat.h" //包含类声明头文件 #pragma comment(lib,"lib所在路径\\datFile.lib") //或者把lib拷贝至本目录,直接填"datFile.lib" int _tmain(int argc, _TCHAR* argv[]) { Mat src; datFile dat; dat.read("dat文件所在路径\\raw.dat",src); namedWindow("show",CV_WINDOW_NORMAL); resizeWindow("show",dat.height,dat.width); imshow("show",src); waitKey(0); return 0; }
编译,得到testDll.exe
4、将datFile.dll和相关的opencv的dll(包括tbb的lib)与testDll.exe放在同一个文件夹里,那么在别的没有部署opencv的机器上也可以运行了
相关文章推荐
- opencv-从图像旋转学习Mat数据访问
- opencv学习笔记之Mat,图像的新容器
- Qt中用QLabel显示OpenCV中Mat图像数据出现扭曲现象的解决
- OpenCV学习笔记(三)——Mat,图像的新容器
- Dll学习三_Dll 相互间以及主程序间的数据共享——测试未通过,应该用内存映射
- 【Ubuntu+OpenCV】ubuntu/linux环境下,运用opencv实现图像的读入、显示--学习笔记【1】
- OpenCV学习笔记(三)——Mat,图像的新容器
- 【OpenCV学习笔记】之三:Mat初始创建方法----要求数据连续存储
- OpenCV学习笔记 cv.Mat 与 .txt 文件数据的读写操作
- OpenCV学习--实现两幅图像的融合
- 关于OpenCV中利用函数cvConvert实现图像数据类型转换(8U->16S)
- 基础学习笔记之opencv(9):Mat图像扫描
- 使用OpenCV实现内存中图像数据的RGB-->HSV转换
- OpenCV学习笔记(三)——Mat,图像的新容器
- EXTJS学习系列提高篇:第二篇(转载)作者殷良胜,结合EXT2.2+C#.net实现将数据导入Excel的功能
- 利用PHP-ExcelReader实现PHP导入Excel数据[不通过CSV]
- 【OpenCV学习笔记】之二:Mat使用的潜规则----对数据类型敏感
- Opencv2 学习笔记<一>:cv::Mat数据访问方式
- OpenCV学习:Mat矩阵合并两张图像
- opencv学习笔记-入门(7)单通道的图像数据访问