近来,由于项目需求,需要使用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环境配置的更多相关文章

  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. ORACLE查询数据库的锁表情况

      查询数据库的锁表情况语句如下: SELECT p.spid,a.serial#, c.object_name,b.session_id,b.oracle_username,b.os_user_na ...

  2. C++拾遗(二)关于变量

    符号常量——预处理方式 例如: #define ZERO 0 会替换程序中所有的ZERO为0,在那些设计为用于C和C++的头文件中,必须使用#define来定义符号常量. 无符号类型 unsigned ...

  3. 对于js原型和原型链继承的简单理解(第一种,原型链继承)

    原型是js中的难点加重点,也是前端面试官最爱问的问题之一,因为面试官可以通过被面试者对原型的理解.来判断被面试者对js的熟悉程度. 原型的定义 Js所有的函数都有一个prototype属性,这个属性引 ...

  4. 输入框提示--------百度IFE前端task2

    第一版本: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <tit ...

  5. PHP面向对象的构造方法与析构方法

    构造方法与析构方法是对象中的两个特殊方法,它们都与对象的生命周期有关.构造方法时对象创建完成后第一个被对象自动调用的方法,这是我们在对象中使用构造方法的原因.而析构方法时对象在销毁之前最后一个被对象自 ...

  6. Linux编程遇到的问题汇集(持续更新中)

    1.源代码编译redis报告错误: undefined reference to `__sync_add_and_fetch_4' 最近项目组在实验Redis,源代码编译的时候,遇到了错误:undef ...

  7. Flask学习记录之Flask-Migrate

    一.配置Flask-Migrate from flask.ext.migrate import Migrate, MigrateCommand migrate = Migrate(app,db) #第 ...

  8. Python新手学习基础之函数-关键字参数

    关键字参数 函数也可以使用 键 =值 的关键字参数形式被调用,这种调用形式的参数被称为关键字参数. 特别是在一个有许多参数的函数下,你想要指定参数中的部分参数,你可以使用关键字参数的方式来调用函数. ...

  9. JS中的phototype是JS中比较难理解的一个部分

    本文基于下面几个知识点: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展.我们称B的原 ...

  10. cf D. Dima and Hares

    http://codeforces.com/contest/358/problem/D 题意:ai代表相邻的两个野兔都没有吃食物情况下的快乐系数,bi代表的是在相邻的两个野兔中有一个吃到食物的快乐系数 ...