保姆级教程在Ubuntu 20.04上搞定大恒GigE相机驱动与Python图像采集含Pycharm配置如果你正在Ubuntu 20.04上尝试配置大恒GigE相机进行图像采集却苦于驱动安装和Python环境配置的各种坑那么这篇教程就是为你量身定制的。作为一位视觉项目开发者我深知在Linux环境下配置工业相机的痛苦——从驱动安装失败到Python库依赖冲突每一步都可能让你抓狂。本文将手把手带你避开所有常见陷阱从驱动安装到Pycharm配置确保你能一次性成功跑通图像采集demo。1. 环境准备与驱动安装在开始之前请确保你的Ubuntu 20.04系统已经更新到最新状态。打开终端执行以下命令sudo apt update sudo apt upgrade -y1.1 安装必要依赖大恒相机驱动需要一些基础依赖库以下是必须安装的软件包sudo apt install -y build-essential cmake git libraw1394-11 libavcodec-dev libavformat-dev libswscale-dev注意如果你的系统是全新安装的可能还需要安装一些额外的开发工具包。1.2 下载并安装大恒相机SDK大恒官方提供了Linux版的SDK你需要从官网下载最新版本。假设你已经下载了Galaxy_Linux-x86_Gige-U3_64bits-*.tar.gz文件解压并安装tar -xzvf Galaxy_Linux-x86_Gige-U3_64bits-*.tar.gz cd Galaxy_Linux-x86_Gige-U3_64bits-* sudo ./install.sh安装完成后需要将库文件路径添加到系统环境变量中echo export GALAXY_SDK_PATH/opt/Galaxy_Linux-x86_Gige-U3_64bits ~/.bashrc source ~/.bashrc1.3 验证驱动安装安装完成后连接你的大恒相机到网络然后运行以下命令检查设备是否被识别ls /dev | grep raw1394如果能看到类似raw1394的设备节点说明驱动安装成功。你也可以使用大恒提供的工具检查相机连接状态/opt/Galaxy_Linux-x86_Gige-U3_64bits/bin/GxDeviceDetection2. Python环境配置2.1 创建Python虚拟环境为了避免与系统Python环境冲突我们强烈建议使用虚拟环境。这里我们使用Python 3.8Ubuntu 20.04默认安装sudo apt install -y python3.8-venv python3 -m venv ~/gxipy_env source ~/gxipy_env/bin/activate2.2 安装gxipy库激活虚拟环境后进入SDK的Python接口目录安装gxipycd /opt/Galaxy_Linux-x86_Gige-U3_64bits/api/Python python setup.py build sudo python setup.py install常见问题如果遇到权限问题可以尝试使用--user参数安装或者修改目录权限。2.3 安装其他依赖库图像处理通常需要numpy和opencv使用pip安装pip install numpy opencv-python pillow3. Pycharm项目配置3.1 创建新项目并配置解释器打开Pycharm选择Create New Project在Location选择项目路径在Python Interpreter部分选择Existing interpreter点击...按钮找到你之前创建的虚拟环境路径~/gxipy_env/bin/python点击Create完成项目创建3.2 验证环境配置在Pycharm中新建一个Python文件输入以下代码测试环境是否配置正确import gxipy as gx print(gxipy version:, gx.__version__)运行后如果能看到gxipy的版本号说明环境配置成功。4. 图像采集实战4.1 基础图像采集代码下面是一个完整的图像采集示例包含了错误处理和基本的图像保存功能import gxipy as gx import numpy as np from PIL import Image import cv2 def main(): # 创建设备管理器 device_manager gx.DeviceManager() try: # 更新设备列表 dev_num, dev_info_list device_manager.update_all_device_list() if dev_num 0: print(未检测到任何相机设备) return print(f检测到 {dev_num} 台设备) # 通过IP打开第一台设备 cam device_manager.open_device_by_ip(dev_info_list[0].get(ip)) # 设置相机参数 cam.ExposureTime.set(10000) # 曝光时间10ms cam.Gain.set(10.0) # 增益10dB # 开始采集 cam.stream_on() # 获取图像 raw_image cam.data_stream[0].get_image() if raw_image.get_status() ! gx.GxFrameStatusList.SUCCESS: print(获取图像失败) return # 转换图像格式 numpy_image raw_image.get_numpy_array() if numpy_image is None: print(图像转换失败) return # 保存图像 image Image.fromarray(numpy_image) image.save(captured_image.jpg) print(图像保存成功) # 显示图像 cv2.imshow(Captured Image, numpy_image) cv2.waitKey(0) except Exception as e: print(f发生错误: {str(e)}) finally: # 确保资源释放 if cam in locals(): cam.stream_off() cam.close_device() cv2.destroyAllWindows() if __name__ __main__: main()4.2 高级功能实现4.2.1 连续采集要实现连续图像采集可以修改上面的代码# 在stream_on()之后添加循环 for i in range(100): # 采集100帧 raw_image cam.data_stream[0].get_image() if raw_image.get_status() gx.GxFrameStatusList.SUCCESS: numpy_image raw_image.get_numpy_array() cv2.imshow(Live View, numpy_image) if cv2.waitKey(1) 0xFF ord(q): break4.2.2 参数调节大恒相机提供了丰富的参数调节接口以下是一些常用设置参数名称设置方法典型值范围曝光时间cam.ExposureTime.set(value)100-100000 (μs)增益cam.Gain.set(value)0-24 (dB)白平衡cam.BalanceWhiteAuto.set()0-1 (开关)触发模式cam.TriggerMode.set()0-1 (开关)4.3 常见问题解决问题1无法找到相机设备检查网线连接是否正常确保相机和电脑在同一子网运行ifconfig检查网络接口状态问题2图像采集卡顿尝试降低分辨率增加曝光时间检查网络带宽是否足够问题3Python导入gxipy失败确认安装时没有错误检查Python环境是否匹配32位/64位尝试重新安装SDK5. 性能优化与最佳实践5.1 内存管理长时间运行图像采集程序可能会导致内存泄漏建议定期检查内存使用情况使用del显式释放不再需要的对象考虑使用生成器处理图像流5.2 多线程处理对于高性能应用可以使用Python的threading模块实现采集和处理分离import threading from queue import Queue class ImageAcquisitionThread(threading.Thread): def __init__(self, camera, queue): super().__init__() self.camera camera self.queue queue self.running False def run(self): self.running True while self.running: raw_image self.camera.data_stream[0].get_image() if raw_image.get_status() gx.GxFrameStatusList.SUCCESS: self.queue.put(raw_image.get_numpy_array()) def stop(self): self.running False5.3 日志记录添加日志记录可以帮助调试和监控程序运行状态import logging logging.basicConfig( levellogging.INFO, format%(asctime)s - %(levelname)s - %(message)s, filenamecamera.log ) logger logging.getLogger(__name__)在关键位置添加日志记录logger.info(开始图像采集) logger.warning(曝光时间设置过高) logger.error(无法连接到相机)在实际项目中我发现大恒相机的Python接口虽然功能强大但在异常处理方面还有改进空间。特别是在网络不稳定的情况下建议添加重试机制和超时设置。另外使用Pycharm的远程调试功能可以大大简化开发过程特别是当你的开发环境和运行环境不同时。
保姆级教程:在Ubuntu 20.04上搞定大恒GigE相机驱动与Python图像采集(含Pycharm配置)
发布时间:2026/6/11 1:07:53
保姆级教程在Ubuntu 20.04上搞定大恒GigE相机驱动与Python图像采集含Pycharm配置如果你正在Ubuntu 20.04上尝试配置大恒GigE相机进行图像采集却苦于驱动安装和Python环境配置的各种坑那么这篇教程就是为你量身定制的。作为一位视觉项目开发者我深知在Linux环境下配置工业相机的痛苦——从驱动安装失败到Python库依赖冲突每一步都可能让你抓狂。本文将手把手带你避开所有常见陷阱从驱动安装到Pycharm配置确保你能一次性成功跑通图像采集demo。1. 环境准备与驱动安装在开始之前请确保你的Ubuntu 20.04系统已经更新到最新状态。打开终端执行以下命令sudo apt update sudo apt upgrade -y1.1 安装必要依赖大恒相机驱动需要一些基础依赖库以下是必须安装的软件包sudo apt install -y build-essential cmake git libraw1394-11 libavcodec-dev libavformat-dev libswscale-dev注意如果你的系统是全新安装的可能还需要安装一些额外的开发工具包。1.2 下载并安装大恒相机SDK大恒官方提供了Linux版的SDK你需要从官网下载最新版本。假设你已经下载了Galaxy_Linux-x86_Gige-U3_64bits-*.tar.gz文件解压并安装tar -xzvf Galaxy_Linux-x86_Gige-U3_64bits-*.tar.gz cd Galaxy_Linux-x86_Gige-U3_64bits-* sudo ./install.sh安装完成后需要将库文件路径添加到系统环境变量中echo export GALAXY_SDK_PATH/opt/Galaxy_Linux-x86_Gige-U3_64bits ~/.bashrc source ~/.bashrc1.3 验证驱动安装安装完成后连接你的大恒相机到网络然后运行以下命令检查设备是否被识别ls /dev | grep raw1394如果能看到类似raw1394的设备节点说明驱动安装成功。你也可以使用大恒提供的工具检查相机连接状态/opt/Galaxy_Linux-x86_Gige-U3_64bits/bin/GxDeviceDetection2. Python环境配置2.1 创建Python虚拟环境为了避免与系统Python环境冲突我们强烈建议使用虚拟环境。这里我们使用Python 3.8Ubuntu 20.04默认安装sudo apt install -y python3.8-venv python3 -m venv ~/gxipy_env source ~/gxipy_env/bin/activate2.2 安装gxipy库激活虚拟环境后进入SDK的Python接口目录安装gxipycd /opt/Galaxy_Linux-x86_Gige-U3_64bits/api/Python python setup.py build sudo python setup.py install常见问题如果遇到权限问题可以尝试使用--user参数安装或者修改目录权限。2.3 安装其他依赖库图像处理通常需要numpy和opencv使用pip安装pip install numpy opencv-python pillow3. Pycharm项目配置3.1 创建新项目并配置解释器打开Pycharm选择Create New Project在Location选择项目路径在Python Interpreter部分选择Existing interpreter点击...按钮找到你之前创建的虚拟环境路径~/gxipy_env/bin/python点击Create完成项目创建3.2 验证环境配置在Pycharm中新建一个Python文件输入以下代码测试环境是否配置正确import gxipy as gx print(gxipy version:, gx.__version__)运行后如果能看到gxipy的版本号说明环境配置成功。4. 图像采集实战4.1 基础图像采集代码下面是一个完整的图像采集示例包含了错误处理和基本的图像保存功能import gxipy as gx import numpy as np from PIL import Image import cv2 def main(): # 创建设备管理器 device_manager gx.DeviceManager() try: # 更新设备列表 dev_num, dev_info_list device_manager.update_all_device_list() if dev_num 0: print(未检测到任何相机设备) return print(f检测到 {dev_num} 台设备) # 通过IP打开第一台设备 cam device_manager.open_device_by_ip(dev_info_list[0].get(ip)) # 设置相机参数 cam.ExposureTime.set(10000) # 曝光时间10ms cam.Gain.set(10.0) # 增益10dB # 开始采集 cam.stream_on() # 获取图像 raw_image cam.data_stream[0].get_image() if raw_image.get_status() ! gx.GxFrameStatusList.SUCCESS: print(获取图像失败) return # 转换图像格式 numpy_image raw_image.get_numpy_array() if numpy_image is None: print(图像转换失败) return # 保存图像 image Image.fromarray(numpy_image) image.save(captured_image.jpg) print(图像保存成功) # 显示图像 cv2.imshow(Captured Image, numpy_image) cv2.waitKey(0) except Exception as e: print(f发生错误: {str(e)}) finally: # 确保资源释放 if cam in locals(): cam.stream_off() cam.close_device() cv2.destroyAllWindows() if __name__ __main__: main()4.2 高级功能实现4.2.1 连续采集要实现连续图像采集可以修改上面的代码# 在stream_on()之后添加循环 for i in range(100): # 采集100帧 raw_image cam.data_stream[0].get_image() if raw_image.get_status() gx.GxFrameStatusList.SUCCESS: numpy_image raw_image.get_numpy_array() cv2.imshow(Live View, numpy_image) if cv2.waitKey(1) 0xFF ord(q): break4.2.2 参数调节大恒相机提供了丰富的参数调节接口以下是一些常用设置参数名称设置方法典型值范围曝光时间cam.ExposureTime.set(value)100-100000 (μs)增益cam.Gain.set(value)0-24 (dB)白平衡cam.BalanceWhiteAuto.set()0-1 (开关)触发模式cam.TriggerMode.set()0-1 (开关)4.3 常见问题解决问题1无法找到相机设备检查网线连接是否正常确保相机和电脑在同一子网运行ifconfig检查网络接口状态问题2图像采集卡顿尝试降低分辨率增加曝光时间检查网络带宽是否足够问题3Python导入gxipy失败确认安装时没有错误检查Python环境是否匹配32位/64位尝试重新安装SDK5. 性能优化与最佳实践5.1 内存管理长时间运行图像采集程序可能会导致内存泄漏建议定期检查内存使用情况使用del显式释放不再需要的对象考虑使用生成器处理图像流5.2 多线程处理对于高性能应用可以使用Python的threading模块实现采集和处理分离import threading from queue import Queue class ImageAcquisitionThread(threading.Thread): def __init__(self, camera, queue): super().__init__() self.camera camera self.queue queue self.running False def run(self): self.running True while self.running: raw_image self.camera.data_stream[0].get_image() if raw_image.get_status() gx.GxFrameStatusList.SUCCESS: self.queue.put(raw_image.get_numpy_array()) def stop(self): self.running False5.3 日志记录添加日志记录可以帮助调试和监控程序运行状态import logging logging.basicConfig( levellogging.INFO, format%(asctime)s - %(levelname)s - %(message)s, filenamecamera.log ) logger logging.getLogger(__name__)在关键位置添加日志记录logger.info(开始图像采集) logger.warning(曝光时间设置过高) logger.error(无法连接到相机)在实际项目中我发现大恒相机的Python接口虽然功能强大但在异常处理方面还有改进空间。特别是在网络不稳定的情况下建议添加重试机制和超时设置。另外使用Pycharm的远程调试功能可以大大简化开发过程特别是当你的开发环境和运行环境不同时。