opencv作为一个常用帮助我们做哪些操作,跑opencv的硬件

  opencv作为一个常用帮助我们做哪些操作,跑opencv的硬件

  案例一:把自己电脑上可以运行的基于opencv的项目复制到别人(主要是老师)的电脑上,避免别人配置库文件和目录文件以及lib。

  场景二:将自己电脑上可以运行的基于opencv的程序(exe)复制到没有cv库的电脑上进行演示。

  首先展示一下案例一中你的具体配置过程:配置原理见上一篇博文http://blog..net/lanbing510/article/details/8806602.

  将1 \opencv\build目录下的include文件夹和\opencv\build\x86\vc10下的bin和lib文件夹复制到项目所在的目录(以及C项目或stdafx.h所在的一级目录)。

  2添加一个目录。为了实现第一种情况,需要使用相对路径。第一,你要用相对路径来科普。\ 代表当前目录,而\ 。\ 代表上级目录。注意: \ 是VC的保留字,所以你写程序的时候应该用 \ \ 而不是 \ \ 。网络路径使用“/”。具体配置如下:

  Link的配置和往常一样,只是添加了这些常用的库:

  opencv_nonfree243d.lib

  opencv_legacy243d.lib

  opencv_imgproc243d.lib

  opencv_core243d.lib

  opencv_highgui243d.lib

  opencv_video243d.lib

  opencv_ml243d.lib

  opencv_features2d243d.lib

  编译后把对应的dll文件放到exe所在的目录下,就ok了;但是,如果dll太多,就显得臃肿了。如果你想把DLL文件放在不同的文件夹中,然后让程序运行来选择它们,一种方法是设置环境变量。但是问题来了,你不能告诉老师你可以现场配置环境变量。如果对方没有相应的库,更不用说相应的环境变量了。

  解决方案是进行以下配置(假设dll文件夹bin已经按照步骤1复制到项目目录中):

  也就是在环境选项中设置路径,这样也可以使用多个文件夹中的dll。简洁明了。

  3做好以上配置后,就可以编译运行了。

  二、对第二种情况做一个简单的提示。

  如果对方不需要源代码和项目,只是为了显示,可以直接把bin文件夹复制到exe文件所在的目录下(vs一般会问在debug或者release文件夹下),但是你会发现双击exe并不能正常工作,而是提示你找不到dll。如上所述,不配置环境变量或者不把dll文件放在与exe同一级目录下,就无法运行程序;但如果要做示范,也不能太难看。一个exe附件就是各种dll,很乱。我该怎么办?还有两种方法:

  1批处理法,就是写一个bat,先设置好路径,然后运行你的exe,但是还是不好看,当你运行一个bat文件而不是exe给大家看。

  2详细说说第二种方法。可以写一个shell,用ShellExecute调用exe。简单,简短的命令。

  贴一下我下面写的shell程序。

  #包含Windows.h

  #包括iostream

  使用命名空间std

  # define exename _ T( Motion _ ds . exe )

  #define dllpath _T(。\ \ bin’)

  int _tmain(int argc,_TCHAR* argv[])

  ShellExecute(NULL,NULL,exename,NULL,dllpath,SW _ SHOW);

  接住(.)

  std:cout 中出现异常,请检查源程序 exename STD:endl;

  返回0;

  }

  将编译好的shell.exe放在Motion_DS.exe所在的目录下,将Motion_DS.exe放在bin文件夹下。演示时,只需双击shell.exe。

  Paste ShellExecute的参数说明和常见例子。

  -

  ShellExecute(

  hWnd:hWnd;{指定父窗口句柄}

  操作:PChar{指定操作,例如:打开、打印}

  文件名:PChar{指定要打开的文件或程序}

  参数:PChar{指定要打开的程序的参数;如果文件被打开,这应该是nil}

  目录:PChar{默认目录}

  ShowCmd: Integer {open option}

  ):HINST{成功执行将返回应用程序句柄;如果该值=32,则意味着执行错误}

  //返回值的可能错误有:

  =0 {内存不足}

  ERROR _ FILE _ NOT _ FOUND=2;{文件名错误}

  ERROR _ PATH _ NOT _ FOUND=3;{路径名错误}

  ERROR _ BAD _ FORMAT=11{EXE文件无效}

  SE _ ERR _ SHARE=26{出现共享错误}

  SE _ ERR _ ASSOCINCOMPLETE=27{文件名不完全或无效}

  SE _ ERR _ DDETIMEOUT=28{超时}

  SE _ ERR _ DDEFAIL=29动态数据交换事务失败}

  SE _ ERR _ DDEBUSY=30{正在处理其他动态数据交换事务而不能完成该动态数据交换事务}

  SE _ ERR _ NOASSOC=31{没有相关联的应用程序}

  //ShowCmd参数可选值:

  SW _ HIDE=0;{隐藏}

  SW _ show normal=1;{用最近的大小和位置显示,激活}

  SW _ NORMAL=1;{同SW_SHOWNORMAL}

  SW _ show最小化=2;{最小化,激活}

  SW _ show最大化=3;{最大化,激活}

  SW _ MAXIMIZE=3;{同SW_SHOWMAXIMIZED}

  SW _ showno activate=4;{用最近的大小和位置显示,不激活}

  SW _ SHOW=5;{同SW_SHOWNORMAL}

  SW _ MINIMIZE=6;{最小化,不激活}

  SW _ SHOWMINNOACTIVE=7;{同SW_MINIMIZE}

  SW _ SHOWNA=8;{同SW_SHOWNOACTIVATE}

  SW _ RESTORE=9;{同SW_SHOWNORMAL}

  SW _ SHOWDEFAULT=10{同SW_SHOWNORMAL}

  SW _ MAX=10{同SW_SHOWNORMAL}

  //举例说明更多问题(别忘了使用ShellAPI):

  {譬如用记事本打开一个文件}

  开始

  ShellExecute(Handle, open , notepad.exe , C:\WINDOWS\SchedLgU .Txt ,nil,SW _ show normal);

  {第一个参数是用来当作错误提示窗口的父窗口的,不能是零,可以是0(也就是桌面窗口)}

  开始

  ShellExecute(0,打开, notepad.exe , C:\WINDOWS\SchedLgU .Txt ,nil,SW _ show normal);

  {第二个参数如果是零,也会默认位打开}

  开始

  ShellExecute(0,nil, notepad.exe , C:\WINDOWS\SchedLgU .Txt ,nil,SW _ show normal);

  {文件路径可以放在参数五}

  开始

  ShellExecute(0,nil, notepad.exe , SchedLgU .Txt , C:\WINDOWS ,SW _ show normal);

  {把参数三直接指定为要打开的文件,文件将用对应默认程序打开;次数参数四应为nil}

  开始

  ShellExecute(0,nil, SchedLgU . Txt ,nil, C:\WINDOWS ,SW _ show normal);

  {如果文件在:程序目录/当前目录/System32/Windows/PATH环境变量中,参数五也可以nil}

  开始

  ShellExecute(0,nil, SchedLgU .Txt ,nil,nil,SW _ show normal);

  {如果参数三是个文件,可以用参数二命令打印}

  开始

  ShellExecute(0, print , SchedLgU .Txt ,nil,nil,1);

  {用工业管理学(工业工程)打开网页}

  开始

  ShellExecute(Handle, open , IExplore .EXE , about:blank ,nil,SW _ show normal);

  {用火狐打开网页}

  开始

  ShellExecute(Handle, open , firefox.exe , about:blank ,nil,SW _ show normal);

  {用默认浏览器打开网页}

  开始

  ShellExecute(Handle, open , Explorer.exe , about:blank ,nil,SW _ show normal);

  {还是用默认浏览器打开网页}

  开始

  ShellExecute(0,nil, http://del..com ,nil,nil,1);

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • opencv图像识别数字,opencv 识别
  • opencv图像识别数字,opencv 识别,如何基于opencv实现简单的数字识别
  • opencv图像的旋转角度计算,opencv图像仿射变换
  • opencv图像的旋转角度计算,opencv图像仿射变换,OpenCV图像几何变换之透视变换
  • opencv图像的旋转角度计算,opencv 旋转任意角度
  • opencv图像的旋转角度计算,opencv 旋转任意角度,opencv图片的任意角度旋转实现示例
  • opencv图像处理函数,opencv图像轮廓合并
  • opencv图像处理函数,opencv图像轮廓合并,OpenCV图像处理之七种常用图像几何变换
  • opencv双线性插值函数,opencv 图像插值
  • LBPH人脸识别,基于opencv的人脸识别技术
  • LBPH人脸识别,基于opencv的人脸识别技术,Opencv LBPH人脸识别算法详解
  • ,,OpenCV黑帽运算(BLACKHAT)的使用
  • opencv双线性插值函数,opencv 图像插值,C++ OpenCV实现图像双三次插值算法详解
  • ,,C语言 OpenCV实现柱面投影
  • ,,C++ Opencv imfill孔洞填充函数的实现思路与代码
  • 留言与评论(共有 条评论)
       
    验证码: