AVT Vimba与OpenCV环境配置
近来,由于项目需求,需要使用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等等。
pip install numpy
pip install scipy
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的路径。我的如下:
vimbaC_path = r'D:\Program Files\Allied Vision\Vimba_1.4\VimbaC\Bin\VimbaC.dll'
重新编译后,就可以尽情地在python中import了!哎~人生苦短,我用Python啊!
关于Vimba相关API的使用,建议查阅官方的Manual。关于cv2的使用,我后续还会持续更新,迫不及待的小伙伴,可以先自行Google。
最后,把我初步的代码附上,我尽可能地将注释写详细~
# 实现功能:驱动AVT相机,实时显示图像
# 时间:2015.11.17
import cv2
import numpy as np
import time
from pymba import *
class CameraInterface:
    def __init__(self):
        self.vimba = 0
        self.camera = 0
        self.cameraIds = 0
        self.frame0 = 0
        self.frame1 = 0
        self.moreUsefulImgData = 0
    def openCamera(self):
        self.vimba = Vimba()
        self.vimba.startup()
        print "The Vimba lib version is:", self.vimba.getVersion(), ", and vimba run successfully!"
        system = self.vimba.getSystem()
        # list available cameras (after enabling discovery for GigE cameras)
        system.runFeatureCommand("GeVDiscoveryAllOnce")
        time.sleep(0.2)
        self.cameraIds = self.vimba.getCameraIds()
        print "Available cameras", self.cameraIds
        self.camera = self.vimba.getCamera(self.cameraIds[0])
        self.camera.openCamera()
    def setCameraFeature(self):
        # show camera default features and set some features
        #cameraFeatureNames = camera.getFeatureNames()
        #print cameraFeatureName
        print self.camera.AcquisitionMode
        self.camera.AcquisitionMode = 'SingleFrame'
        # announce memory for frame
        self.frame0 = self.camera.getFrame()
        self.frame1 = self.camera.getFrame()
        self.frame0.announceFrame()
    def captureFrame(self):
        self.camera.startCapture()
        self.frame0.queueFrameCapture()
        self.camera.runFeatureCommand('AcquisitionStart')
        self.camera.runFeatureCommand('AcquisitionStop')
        self.frame0.waitFrameCapture()
        imgData = self.frame0.getBufferByteData()
        self.moreUsefulImgData = np.ndarray(buffer = self.frame0.getBufferByteData(), dtype = np.uint8, shape = (self.frame0.height, self.frame0.width, 1))
        self.camera.endCapture()
    def showImage(self):
        cv2.imshow("Show Image", self.moreUsefulImgData)
    def endShow(self):
        cv2.destroyAllWindows()
        self.vimba.shutdown()
def main():
    ins = CameraInterface()
    ins.openCamera()
    ins.setCameraFeature()
    while True:
        ins.captureFrame()
        ins.showImage()
        if cv2.waitKey(1) == 27: # press esc to quit
            break
    ins.endShow()
if __name__ == "__main__":
    main()
By tjt
2015.11.17
AVT Vimba与OpenCV环境配置的更多相关文章
- Opencv环境配置及踩坑
		
Opencv环境配置及踩坑 1.什么是Opencv OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux.Windows.Android和[ ...
 - opencv 环境配置-windowsx64 +VS2017
		
opencv版本为4.1.1官方最新版本, https://sourceforge.net/projects/opencvlibrary/ 先配置本地工程环境: 右键我的电脑-属性 将bin的路径添加 ...
 - 【QT相关】QT+opencv环境配置
		
在qt msvc2010版软件中使用opencv2.4.9进行库函数配置.仅适用于windows下. INCLUDEPATH += $$PWD/../../../opencv/build/includ ...
 - ubuntu eclipse opencv环境配置
		
项目——Properties——C/C++ Build——Settings 配置包含目录: GCC C++ Compiler ——Includes /usr/include /usr/local/ ...
 - python + opencv 环境配置
		
1.python 2.7.10 2.numpy 1.8.1 3.opencv2.4.8 4.OpenCV目录 ...\opencv\build\python\2.7" 下 "cv2 ...
 - 新手一步一步OpenCV+Win7+Visual Studio 2013环境配置
		
地点:湖南大学软件大楼211 时间:2013.12.19 昨天导师布置了个任务,要求是找出用相机拍出同一移动场景下的两张照片,计算机能根据其中的差异计算场景移动的距离和旋转角度.据说以前很牛逼的师兄完 ...
 - OpenCv的Java,C++开发环境配置
		
1.OpenCV 下载及安装配置 opencv的下载地址:http://opencv.org/downloads.html 最新版本:opencv3.0.0 注意:支持的visual studio20 ...
 - OpenCV 新手教程 之环境配置 + 图片匹配 matchTemplate
		
1.什么是OpenCV OpenCV的全称是:Open Source Computer Vision Library. OpenCV是一个基于(开源)发行的跨平台计算机视觉库,能够执行在Linux.W ...
 - OpenCV On Android环境配置最新&最全指南(Android Studio篇)
		
本文是从本人简书上搬运而来,属本人原创,如有转载,请注明出处:http://www.jianshu.com/p/6e16c0429044 简介 本文是<OpenCV On Android环境配置 ...
 
随机推荐
- ORACLE用户操作的一些常用操作总结【weber出品】
			
一.创建一个表空间 create tablespace pioneer_data datafile '/u01/datafile/pioneer_datadbf' size 100m autoexte ...
 - Swift - guard关键字(守护)
			
guard语句和if语句有点类似,都是根据其关键字之后的表达式的布尔值决定下一步执行什么.但与if语句不同的是,guard语句只会有一个代码块,不像if语句可以if else多个代码块. 那么guar ...
 - EasyUi DataGrid中数据编辑方式及编辑后数据获取,校验处理
			
EasyUi中的DataGrid提供前台编辑的相关函数. 实现客户选中DataGrid中一列后,对选中列中的一个字段进行编辑,并对数据进行实时校验后,传递至后台保存的需求, 主要涉及到DataGrid ...
 - 在iis中调试asp.net程序
			
第一步,在iis中新建一个网站,名称为Langben,“物理路径”选择你的程序的根目录,端口你可以随便设置一个数,我这里设置为8888(后面要用到哦). 第二步,应用程序池设置一下 第三步,接下来,在 ...
 - 左右推拽显示对比图 - jQyery封装 - 附源文件
			
闲来无事,做了一个模块效果 左右拖拽显示对比图,是用jq封装的 利用鼠标距离左侧(0,0)坐标的横坐标位移来控制绝对定位的left值 再配合背景图fixed属性,来制作视觉差效果 代码如下 <! ...
 - Guava API学习之Preconditions优雅的检验参数 编辑
			
在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常流程执行下去.对于可预知的一些数据上的错误,我们一定要做 事前检测和判断,来避免程序流程出错,而不是完全通过错误 ...
 - 【回忆1314】回忆之placeholder
			
直接看效果点这里 HTML <!DOCTYPE html> <html> <head lang="zh-CN"> <meta charse ...
 - nsfocus-笔试题
			
1.描述sendmail原理及通讯机制 sendmail程序接受到待发邮件后,通过关键字@判断邮件的格式是否符合要求,匹配成功后提取邮件后缀域名信息并查询DNS数据库相关MX(邮件专用)记录,若有匹配 ...
 - js限制input只能输入有效的数字,有且只有一个小数点,第一个不能为小数点-备
			
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
 - Qt编程之实现属性窗口编辑器
			
类似于这种: 就是右下角这个框,有属性名字和对应的value编辑. 这个Widget是作为一个QDockWidget被添加到QMainWindow中的.QMainWindow必须要有centralWi ...