博客
关于我
Python处理数据方向之OpenCV
阅读量:796 次
发布时间:2023-03-07

本文共 2182 字,大约阅读时间需要 7 分钟。

OpenCV-Python简介与图像处理实践

OpenCV-Python是OpenCV库的Python绑定,旨在为计算机视觉问题提供高效解决方案。它基于Numpy库,支持快速图像处理和算法开发,同时兼容多种编程语言和平台。

OpenCV历史

OpenCV最初由Gary Bradsky于1999年创立,2000年发布第一个版本。Vadim Pisarevsky随后加入团队,负责管理OpenCV的俄罗斯开发工作。2005年,OpenCV在斯坦利项目中取得重大突破,成功参加DARPA Grand Challenge。 Willow Garage的支持下,OpenCV继续发展,成为计算机视觉领域的重要工具。

OpenCV-Python特性

OpenCV-Python支持多种编程语言,包括C++、Python、Java等,并适配Windows、Linux、macOS等主流平台。其基于CUDA和OpenCL的GPU接口,显著提升图像处理效率。

Python优势

与传统C/C++相比,Python语言简洁易学,代码可读性高。OpenCV-Python通过C扩展实现了与低层语言相同的执行速度,同时提供更高级的开发便利性。

Numpy支持

OpenCV-Python整合Numpy库,提供MATLAB风格的语法,简化数组操作。Numpy的高效性能使OpenCV-Python在图像处理和机器学习任务中表现优异。

安装指南

环境要求

安装前需预先安装Numpy和Matplotlib。

安装命令

根据需求选择适合的安装包:

  • 标准桌面环境
    • pip install opencv-python(仅需主模块)
    • pip install opencv-contrib-python(主模块及-contrib模块)
  • 服务器环境
    • pip install opencv-python-headless(无GUI主模块)
    • pip install opencv-contrib-python-headless(无GUI主模块及-contrib模块)

国内镜像下载

加速安装使用国内镜像:

pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple

OpenCV模块

OpenCV分为多个模块,核心模块包括:

  • core:实现基本数据结构和操作,如图像数组处理。
  • highgui:视频和图像读取、显示功能。
  • imgproc:图像处理基础方法,如滤波、几何变换等。

其他高级模块涵盖特征提取、目标检测、图像拼接、机器学习等功能,为复杂场景提供支持。

图像处理基本操作

读取图像

使用cv2.imread函数读取图像,支持彩色、灰度和原始色彩模式:

gray_img = cv2.imread('img/cartoon.jpg', 0)  # 灰度图像
rgb_img = cv2.imread('img/cartoon.jpg', 1) # 彩色图像

显示图像

使用cv2.imshow函数显示图像,支持窗口调整:

cv2.imshow('origin image', imutils.resize(rgb_img, 800))
cv2.imshow('gray image', imutils.resize(gray_img, 800))

保存图像

使用cv2.imwrite函数保存图像,支持多种格式:

cv2.imwrite('rgb_img.jpg', rgb_img)
cv2.imwrite('gray_img.png', gray_img)

销毁窗口

确保程序退出时销毁图像窗口,避免资源泄漏:

if cv2.waitKey(10000):
cv2.destroyAllWindows()

色彩空间变换

cv2.cvtColor函数用于图像色彩空间转换,支持多种转换模式,如BGR到RGB、HSV等。例如:

hsv_img = cv2.cvtColor(rgb_img, cv2.COLOR_BGR2HSV)

示例代码

import cv2
import numpy as np
# 读取图像
rgb_img = cv2.imread('E:/peking_rw/ocr_project/base_prehandle/img/cartoon.jpg')
gray_img = cv2.cvtColor(rgb_img, cv2.COLOR_BGR2GRAY)
# 显示图像
cv2.imshow('origin image', imutils.resize(rgb_img, 800))
cv2.imshow('gray image', imutils.resize(gray_img, 800))
# 保存图像
cv2.imwrite('rgb_img.jpg', rgb_img)
cv2.imwrite('gray_img.png', gray_img)
# 销毁窗口
if cv2.waitKey(0) == 27:
cv2.destroyAllWindows()

通过以上方法,开发者可以轻松进行图像读取、处理和展示操作,充分发挥OpenCV-Python的强大功能。

转载地址:http://fxofk.baihongyu.com/

你可能感兴趣的文章
python | shiv,一个超酷的 打包工具 Python 库!
查看>>
python | six,一个神奇的 Python 库!
查看>>
Python读取图片的几种方法供net使用
查看>>
python | spacy,一个神奇的 Python 库!
查看>>
python | sqlmap,一个实用的 Python 库!
查看>>
python | sumy,一个超酷的 用于文本摘要的 Python 库!
查看>>
python | tiler,一个不可思议的 图像切片重组 Python 库!
查看>>
python | tinydb,一个非常厉害的 关于数据库的 Python 库!
查看>>
python | tox,一个超强的 自动化测试工具 Python 库!
查看>>
python | ttkbootstrap,一个神奇的 Python 库!
查看>>
python | unoconv,一个超厉害的 Python 库!
查看>>
python | urllib3,一个超强的 Python 库!
查看>>
python | webassets,一个超强的 Python 库!
查看>>
python | werkzeug,一个不可思议的 Python 库!
查看>>
python | xlsxwriter,一个实用的 Python 库!
查看>>
python | xlwings,一个非常实用的 Excel 相关的 Python 库!
查看>>
python | xmltodict,一个非常厉害的 关于XML数据 Python 库!
查看>>
python | xonsh,一个超酷的 Python 库!
查看>>
python | yagmail,一个实用的 Python 库!
查看>>
python | 一文掌握Python的上下文管理器和with语句
查看>>