近来,由于项目需求,需要使用AVT的一款相机采集图像并进行相应的算法处理。环境的配置过程较为复杂,特此记录,以做备忘。也给有需要的小伙伴们一些key point的分享。

搭建环境:Windows7 + Python2.7 + OpenCV3.0

1. Python2.7

由于平时的工作基本都是Mac或Linux平台,很少用到Windows,这次也把在Windows上面安装Python的过程做简单记录。

(1) 这里选择软件支持效果较好的Python2.7,Python官网直接下载安装。

(2) 重量级的包管理器pip。Pip官网下载二进制文件,解压到某个文件夹后,使用cmd进行安装。步骤是,cd到相应目录,输入python setup.py install

(3) 安装完毕后使用pip工具安装一些相当有用的lib,比如numpy,scipy,matplotlib等等。

  1. pip install numpy
  2. pip install scipy
  3. pip install matplotlib
2. OpenCV3.0

(1) 安装包在OpenCV官网下载,网速原因,博主下载了好几次才成功。安装过程其实只是简单的解压缩。

(2) 由于使用Python API,进入OpenCV安装目录下/build/python/2.7/cv2.pyd。将cv2.pyd复制到Python安装目录下的/Lib/site-packages/

至此就可以使用Python进行OpenCV的相关操作了。

3. AVT Vimba

(1) AVT官网下载并安装。由于官方仅提供了C/C++的API,因此想使用Python的同学有几个选择:使用ctypes,或者使用pymba。

(2) 这里要感谢伟大的Github,给我们节约了无数的时间,也让我们能够学习到最先进的代码。pymba的Github地址,https://github.com/morefigs/pymba。这里安装过程同pip,下载解压到某个文件夹后,使用cmd shell,cd到相应目录,输入python setup.py install

(3) 这里要注意两点。一、pymba目前仅支持Vimba1.3的版本,因此下载更高版本的同学在后续使用过程中,可能会遇到各种Bug。二、在安装pymba之后,需要更改pymba默认索引的VimbaC.dll的路径。具体更改方法为找到/pymba/vimbadll.py将其中的Line13和Line16更改为自己VimbaC.dll的路径。我的如下:

  1. vimbaC_path = r'D:\Program Files\Allied Vision\Vimba_1.4\VimbaC\Bin\VimbaC.dll'

重新编译后,就可以尽情地在python中import了!哎~人生苦短,我用Python啊!

关于Vimba相关API的使用,建议查阅官方的Manual。关于cv2的使用,我后续还会持续更新,迫不及待的小伙伴,可以先自行Google。

最后,把我初步的代码附上,我尽可能地将注释写详细~

  1. # 实现功能:驱动AVT相机,实时显示图像
  2. # 时间:2015.11.17
  3. import cv2
  4. import numpy as np
  5. import time
  6. from pymba import *
  7. class CameraInterface:
  8. def __init__(self):
  9. self.vimba = 0
  10. self.camera = 0
  11. self.cameraIds = 0
  12. self.frame0 = 0
  13. self.frame1 = 0
  14. self.moreUsefulImgData = 0
  15. def openCamera(self):
  16. self.vimba = Vimba()
  17. self.vimba.startup()
  18. print "The Vimba lib version is:", self.vimba.getVersion(), ", and vimba run successfully!"
  19. system = self.vimba.getSystem()
  20. # list available cameras (after enabling discovery for GigE cameras)
  21. system.runFeatureCommand("GeVDiscoveryAllOnce")
  22. time.sleep(0.2)
  23. self.cameraIds = self.vimba.getCameraIds()
  24. print "Available cameras", self.cameraIds
  25. self.camera = self.vimba.getCamera(self.cameraIds[0])
  26. self.camera.openCamera()
  27. def setCameraFeature(self):
  28. # show camera default features and set some features
  29. #cameraFeatureNames = camera.getFeatureNames()
  30. #print cameraFeatureName
  31. print self.camera.AcquisitionMode
  32. self.camera.AcquisitionMode = 'SingleFrame'
  33. # announce memory for frame
  34. self.frame0 = self.camera.getFrame()
  35. self.frame1 = self.camera.getFrame()
  36. self.frame0.announceFrame()
  37. def captureFrame(self):
  38. self.camera.startCapture()
  39. self.frame0.queueFrameCapture()
  40. self.camera.runFeatureCommand('AcquisitionStart')
  41. self.camera.runFeatureCommand('AcquisitionStop')
  42. self.frame0.waitFrameCapture()
  43. imgData = self.frame0.getBufferByteData()
  44. self.moreUsefulImgData = np.ndarray(buffer = self.frame0.getBufferByteData(), dtype = np.uint8, shape = (self.frame0.height, self.frame0.width, 1))
  45. self.camera.endCapture()
  46. def showImage(self):
  47. cv2.imshow("Show Image", self.moreUsefulImgData)
  48. def endShow(self):
  49. cv2.destroyAllWindows()
  50. self.vimba.shutdown()
  51. def main():
  52. ins = CameraInterface()
  53. ins.openCamera()
  54. ins.setCameraFeature()
  55. while True:
  56. ins.captureFrame()
  57. ins.showImage()
  58. if cv2.waitKey(1) == 27: # press esc to quit
  59. break
  60. ins.endShow()
  61. if __name__ == "__main__":
  62. main()

By tjt

2015.11.17

AVT Vimba与OpenCV环境配置的更多相关文章

  1. Opencv环境配置及踩坑

    Opencv环境配置及踩坑 1.什么是Opencv OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux.Windows.Android和[ ...

  2. opencv 环境配置-windowsx64 +VS2017

    opencv版本为4.1.1官方最新版本, https://sourceforge.net/projects/opencvlibrary/ 先配置本地工程环境: 右键我的电脑-属性 将bin的路径添加 ...

  3. 【QT相关】QT+opencv环境配置

    在qt msvc2010版软件中使用opencv2.4.9进行库函数配置.仅适用于windows下. INCLUDEPATH += $$PWD/../../../opencv/build/includ ...

  4. ubuntu eclipse opencv环境配置

    项目——Properties——C/C++ Build——Settings 配置包含目录: GCC C++ Compiler   ——Includes /usr/include /usr/local/ ...

  5. python + opencv 环境配置

    1.python 2.7.10 2.numpy 1.8.1 3.opencv2.4.8 4.OpenCV目录 ...\opencv\build\python\2.7" 下 "cv2 ...

  6. 新手一步一步OpenCV+Win7+Visual Studio 2013环境配置

    地点:湖南大学软件大楼211 时间:2013.12.19 昨天导师布置了个任务,要求是找出用相机拍出同一移动场景下的两张照片,计算机能根据其中的差异计算场景移动的距离和旋转角度.据说以前很牛逼的师兄完 ...

  7. OpenCv的Java,C++开发环境配置

    1.OpenCV 下载及安装配置 opencv的下载地址:http://opencv.org/downloads.html 最新版本:opencv3.0.0 注意:支持的visual studio20 ...

  8. OpenCV 新手教程 之环境配置 + 图片匹配 matchTemplate

    1.什么是OpenCV OpenCV的全称是:Open Source Computer Vision Library. OpenCV是一个基于(开源)发行的跨平台计算机视觉库,能够执行在Linux.W ...

  9. OpenCV On Android环境配置最新&最全指南(Android Studio篇)

    本文是从本人简书上搬运而来,属本人原创,如有转载,请注明出处:http://www.jianshu.com/p/6e16c0429044 简介 本文是<OpenCV On Android环境配置 ...

随机推荐

  1. (转)ASP.NET MVC 学习第一天

    天道酬勤0322   博客园 | 首页 | 发新随笔 | 发新文章 | 联系 | 订阅  | 管理 随笔:10 文章:0 评论:9 引用:0 ASP.NET MVC 学习第一天 今天开始第一天学习as ...

  2. DOM4J 解析 XML

    1.在项目根目录下新建lib文件夹 2.把dom4j文件拷贝到lib文件夹 3.dom4j,右键Build Path---->Add To Build Path 这样就添加dom4j到项目成功 ...

  3. 读书笔记_Effective_C++_条款二十二:将成员变量声明为private

    1.格式统一 在调用的时候,不会去想有没有(),一律是有get(),或者set()之类的. 2.封装 能直接访问得越少,表明封装性越高, 封装性越高,我们的顾虑就少了, 例如:我们a.data*0.9 ...

  4. java学习笔记 (7) —— 实现简单的上传处理

    1.下载apache 的 commons-fileupload.jar 包及 commons-io.jar 2.引入到lib 文件夹下 3.新建uploadApache.jsp <%@ page ...

  5. 当 IDENTITY_INSERT 设置为 OFF 时,不能为表中的标识列插入显式值。

    出现以上错误是应为在执行insert语句时,将自动增加的字段加入,导致报错. 解决办法:把自增列的字段从插入语句中删除

  6. 关于SRAM,DRAM,SDRAM,以及NORFLASH,NANDFLASH

    韦东山的视频里面说S3C2440有4KB的内存,这个其实是不正确的,这4KB的RAM严格说不应该叫内存,严格来说芯片外面的64MB的SDRAM才能叫做内存,里面的那4KB只是当nandflash启动的 ...

  7. Java学习笔记--StringTokenizer的使用

    拓展:Pattern.split替代String.split http://www.cnblogs.com/gnivor/p/4386978.html StringTokenizer是一个用来分隔St ...

  8. JAVA_build_ant_cmd pass muti param

    ant -f buildFileName -Dpropretyname1=value1  -Dpropretyname2=value2 ant [options] [target [target2 [ ...

  9. “express不是内部或外部命令”解决办法

    由于安装的Express是最新版本4.13.1,4.x版本就需要安装express-generator.命令如下:npm install -g express-generator ps: 1.卸载: ...

  10. iOS 9之Advanced Touch Input(高级触摸输入)

    金田 今天要讲的主题是iOS 9高级触摸输入,更准确地讲,是在iOS9上如何减少触摸输入到屏幕显示的延迟程度,此次将分 低延迟渲染(iOS9 渲染性能优化)和 触摸点方案改进 两个方面来介绍. 低延迟 ...