Python OpenCV中常用图片处理函数小结

 更新时间:2024年03月13日 09:25:47   作者:Sitin涛哥  
在计算机视觉和图像处理领域,OpenCV(Open Source Computer Vision Library)是一个非常强大和流行的开源库,本文将介绍一些常用的OpenCV函数,希望对大家有所帮助

在计算机视觉和图像处理领域,OpenCV(Open Source Computer Vision Library)是一个非常强大和流行的开源库。它提供了丰富的函数和工具,用于处理图像和视频数据。本文将介绍一些常用的OpenCV函数,包括图像读取、显示、保存、调整大小、转换颜色空间、图像滤波、边缘检测等,并提供详细的示例代码可以更好地理解和应用。

安装OpenCV库

在开始之前,需要确保已经安装了OpenCV库。

可以使用pip来安装OpenCV:

pip install opencv-python

图像读取、显示和保存

在OpenCV中,可以使用cv2.imread()函数读取图像,使用cv2.imshow()函数显示图像,使用cv2.imwrite()函数保存图像。

import cv2

# 读取图像
image = cv2.imread('example.jpg')

# 显示图像
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 保存图像
cv2.imwrite('output.jpg)

调整图像大小

在图像处理中,经常需要调整图像的大小以适应不同的需求。可以使用cv2.resize()函数来调整图像的大小。

import cv2

# 读取图像
image = cv2.imread('example.jpg')

# 调整图像大小为宽度为300像素,高度自动调整
resized_image = cv2.resize(image, (300, 0))

# 显示调整大小后的图像
cv2.imshow('Resized Image', resized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

转换颜色空间

在图像处理中,经常需要将图像从一种颜色空间转换到另一种颜色空间。OpenCV提供了cv2.cvtColor()函数来实现颜色空间的转换。

import cv2

# 读取图像
image = cv2.imread('example.jpg')

# 将图像从BGR颜色空间转换为灰度颜色空间
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 显示灰度图像
cv2.imshow('Gray Image', gray_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

图像滤波

图像滤波是图像处理中常用的技术之一,用于平滑图像、去除噪声、边缘检测等。OpenCV提供了多种图像滤波函数,包括高斯滤波、中值滤波等。

import cv2

# 读取图像
image = cv2.imread('example.jpg')

# 高斯滤波
blurred_image = cv2.GaussianBlur(image, (5, 5), 0)

# 显示滤波后的图像
cv2.imshow('Blurred Image', blurred_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

边缘检测

边缘检测是图像处理中的重要任务之一,可以帮助识别图像中的物体边界和轮廓。OpenCV提供了多种边缘检测算法,包括Sobel算子、Canny边缘检测等。

import cv2

# 读取图像
image = cv2.imread('example.jpg')

# 将图像转换为灰度图像
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 使用Canny边缘检测算法检测边缘
edges = cv2.Canny(gray_image, 100, 200)

# 显示边缘检测结果
cv2.imshow('Edges', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()

图像旋转和仿射变换

除了调整大小和颜色空间转换外,有时候还需要对图像进行旋转或者仿射变换。OpenCV提供了cv2.rotate()函数来实现图像的旋转,以及cv2.warpAffine()函数来实现仿射变换。

import cv2
import numpy as np

# 读取图像
image = cv2.imread('example.jpg')

# 获取图像的高度和宽度
height, width = image.shape[:2]

# 旋转图像90度
rotated_image = cv2.rotate(image, cv2.ROTATE_90_CLOCKWISE)

# 定义旋转矩阵(逆时针旋转45度)
rotation_matrix = cv2.getRotationMatrix2D((width/2, height/2), 45, 1)

# 进行仿射变换
affine_transformed_image = cv2.warpAffine(image, rotation_matrix, (width, height))

# 显示旋转后的图像和仿射变换后的图像
cv2.imshow('Rotated Image', rotated_image)
cv2.imshow('Affine Transformed Image', affine_transformed_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

图像轮廓和形状检测

在图像处理和计算机视觉中,常常需要检测图像中的轮廓和形状。OpenCV提供了cv2.findContours()函数来寻找图像中的轮廓,以及cv2.drawContours()函数来绘制轮廓。

import cv2

# 读取图像
image = cv2.imread('example.jpg')

# 将图像转换为灰度图像
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 使用Canny边缘检测算法检测边缘
edges = cv2.Canny(gray_image, 100, 200)

# 寻找图像中的轮廓
contours, hierarchy = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 绘制轮廓
contour_image = cv2.drawContours(image.copy(), contours, -1, (0, 255, 0), 2)

# 显示轮廓图像
cv2.imshow('Contours', contour_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

图像特征提取和匹配

图像特征提取和匹配是计算机视觉中的重要任务,可以用于图像识别、目标跟踪等应用。OpenCV提供了多种特征提取和匹配算法,包括SIFT、SURF、ORB等。

import cv2

# 读取图像
image1 = cv2.imread('example1.jpg')
image2 = cv2.imread('example2.jpg')

# 将图像转换为灰度图像
gray_image1 = cv2.cvtColor(image1, cv2.COLOR_BGR2GRAY)
gray_image2 = cv2.cvtColor(image2, cv2.COLOR_BGR2GRAY)

# 创建SIFT检测器
sift = cv2.SIFT_create()

# 检测关键点和描述符
keypoints1, descriptors1 = sift.detectAndCompute(gray_image1, None)
keypoints2, descriptors2 = sift.detectAndCompute(gray_image2, None)

# 创建匹配器
bf = cv2.BFMatcher()

# 使用KNN匹配
matches = bf.knnMatch(descriptors1, descriptors2, k=2)

# 应用比率测试
good_matches = []
for m, n in matches:
    if m.distance < 0.75 * n.distance:
        good_matches.append([m])

# 绘制匹配结果
match_image = cv2.drawMatchesKnn(image1, keypoints1, image2, keypoints2, good_matches, None, flags=cv2.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS)

# 显示匹配结果
cv2.imshow('Matches', match_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

总结

本文介绍了Python中使用OpenCV库进行图像处理的一些常用函数和技术,包括图像读取、显示、保存、调整大小、转换颜色空间、图像滤波、边缘检测、图像旋转和仿射变换、图像轮廓和形状检测、图像特征提取和匹配等。通过合理地应用这些函数和技术,可以实现各种图像处理和计算机视觉任务,为图像分析、目标识别、图像检测等领域的应用提供支持。希望本文能够帮助大家更好地理解和应用OpenCV库,在实际的项目中发挥其作用。

以上就是Python OpenCV中常用图片处理函数小结的详细内容,更多关于Python OpenCV图片处理的资料请关注脚本之家其它相关文章!

相关文章

  • Python中@dataclass装饰器实践指南

    Python中@dataclass装饰器实践指南

    这篇文章主要给大家介绍了关于Python@dataclass装饰器的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • Python报错ValueError: cannot convert float NaN to integer的解决方法

    Python报错ValueError: cannot convert float NaN to intege

    在Python编程中,我们经常需要处理各种数据类型,包括浮点数和整数,然而,有时候我们可能会遇到一些意外的情况,比如将一个包含NaN(Not a Number)的浮点数转换为整数时,就会抛出错误,本文将探讨这个错误的原因,并给出几种可能的解决方案,需要的朋友可以参考下
    2024-09-09
  • 一篇文章带你了解Python中的类

    一篇文章带你了解Python中的类

    这篇文章主要给大家介绍了关于Python中类的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2021-09-09
  • python主动抛出异常raise的方法实现

    python主动抛出异常raise的方法实现

    本文主要介绍了python主动抛出异常raise的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-12-12
  • 使用python 打开文件并做匹配处理的实例

    使用python 打开文件并做匹配处理的实例

    今天小编就为大家分享一篇使用python 打开文件并做匹配处理的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Python如何使用Pandas库从Excel文件中提取数据

    Python如何使用Pandas库从Excel文件中提取数据

    今天我要分享一个超级实用的Python技巧:如何用pandas库从Excel文件中提取我们需要的数据列,这个技能在工作中特别有用,比如处理学生成绩表、客户名单等Excel数据时,可以快速获取关键信息,需要的朋友可以参考下
    2025-04-04
  • python将红底证件照转成蓝底的实现方法

    python将红底证件照转成蓝底的实现方法

    这篇文章主要介绍了python将红底证件照转成蓝底,本文给大家分享四种方法通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • pycharm不能运行.py文件的解决方法

    pycharm不能运行.py文件的解决方法

    今天小编就为大家分享一篇pycharm不能运行.py文件的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python中用Decorator来简化元编程的教程

    Python中用Decorator来简化元编程的教程

    这篇文章主要介绍了Python中用Decorator来简化元编程的教程,来自于IBM官方开发者技术文档,需要的朋友可以参考下
    2015-04-04
  • Python实现指定区域桌面变化监控并报警

    Python实现指定区域桌面变化监控并报警

    在这篇博客中,我们将使用Python编程语言和一些常用的库来实现一个简单的区域监控和变化报警系统,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2023-07-07

最新评论