温馨提示×

如何在Ubuntu上使用Python进行图像处理

小樊
38
2025-12-28 06:24:51
栏目: 编程语言

在 Ubuntu 上使用 Python 进行图像处理的快速指南

一 环境准备

  • 确认已安装 Python 3pip
    • 检查版本:python3 --versionpip3 --version
    • 更新并安装 pip:sudo apt update && sudo apt install -y python3-pip
  • 建议为项目创建虚拟环境(可选但推荐):
    • python3 -m venv venv && source venv/bin/activate
  • 安装常用图像处理库(按需选择):
    • Pillow(基础编辑):pip install pillow
    • OpenCV(计算机视觉):pip install opencv-python
    • scikit-image(科研常用算法):pip install scikit-image
    • 可选:若需更高性能,可考虑 Pillow-SIMD 等优化分支(需按官方说明从源码构建)。

二 使用 Pillow 进行基础编辑

  • 安装:pip install pillow
  • 示例(打开、灰度、缩放、增强、保存):
    from PIL import Image, ImageEnhance
    
    # 1) 打开与显示
    img = Image.open('example.jpg')
    
    # 2) 转为灰度并缩放
    gray = img.convert('L')
    resized = gray.resize((400, 400))
    
    # 3) 增强对比度
    enhancer = ImageEnhance.Contrast(resized)
    enhanced = enhancer.enhance(1.5)
    
    # 4) 保存
    enhanced.save('example_gray_resized_enhanced.jpg', quality=95)
    
  • 说明:Pillow 适合日常的裁剪、旋转、滤镜、颜色转换等任务,API 简洁易用。

三 使用 OpenCV 进行计算机视觉处理

  • 安装:pip install opencv-python
  • 示例(读取、灰度、边缘检测、保存;无 GUI 环境可用 headless 版本):
    import cv2
    
    # 1) 读取(BGR 顺序)
    img = cv2.imread('example.jpg')
    
    # 2) 转为灰度
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    # 3) 边缘检测(Canny)
    edges = cv2.Canny(gray, threshold1=100, threshold2=200)
    
    # 4) 保存
    cv2.imwrite('edges.jpg', edges)
    
    # 5) 需要显示时(有图形环境)
    # cv2.imshow('Edges', edges)
    # cv2.waitKey(0)
    # cv2.destroyAllWindows()
    
  • 说明:OpenCV 适合特征检测、对象识别、视频处理等进阶任务;在无显示环境(如服务器)可使用 opencv-python-headless

四 常见问题与实用建议

  • 颜色空间差异:
    • Pillow 使用 RGBOpenCV 使用 BGR。在两者间传递图像时需转换:
      • OpenCV → Pillow:Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
      • Pillow → OpenCV:cv2.cvtColor(np.array(pil_img), cv2.COLOR_RGB2BGR)
  • 无 GUI 或远程服务器:
    • 使用 opencv-python-headless 避免 GUI 依赖;或用 matplotlib 显示图像(plt.imshow())。
  • 性能优化:
    • 批量处理或高吞吐场景可考虑 Pillow-SIMD、多线程/多进程与 I/O 优化。
  • 字体与绘图:
    • 使用 ImageFont.truetype 时提供绝对路径,避免 “cannot open resource” 错误。
  • 路径与权限:
    • 确保脚本对输入/输出路径有读写权限,并使用绝对路径减少错误。

0