博客
关于我
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基础实践(四)
查看>>
Python基础学习笔记(九)常用数据类型转换函数
查看>>
Python基础学习参考(五):字符串和编码
查看>>
Python基础学习
查看>>
python基础变量之---集合
查看>>
python基础变量之---字典
查看>>
python基础变量之---列表
查看>>
python基础变量之---元组
查看>>
python基础内容_Python基础入门必须了解的
查看>>
Python基础之面向对象2(封装)
查看>>
Python基础之给函数增加元信息
查看>>
python基础之字符编码
查看>>
python基础之多线程与多进程(二)
查看>>
Python基础之基本数据类型一《数字与字符串》
查看>>
python基础之变量---总纲
查看>>
Python基础之列表
查看>>
Python基础之Python环境搭建
查看>>
python基础之--面相对象--OOP基本特性
查看>>
python基础之--迭代器和生成器及异常处理
查看>>
python基础之--包和模块
查看>>