OpenCV-Python 对图像的基本操作代码

关于 OpenCV-Python 对图像的基本操作,我们通常会用到以下几个工具:

  • 读取图像
  • 显示图像
  • 保存图像
  • 转换图像颜色空间
  • 裁剪图像
  • 调整图像大小
  • 增强对比度和亮度
  • 图像平移与旋转
  • 应用图像内核和滤波器
  • 绘制图形和文字

下面我们一一进行讲解:

读取图像

OpenCV-Python 可以读取许多图像格式,包括 JPG、PNG、BMP 和 GIF,通过 cv2.imread() 函数读取:

import cv2

image = cv2.imread("image.jpg")   # 读取图片,注意图片和脚本要在同一文件夹下

显示图像

读取图像之后,我们就可以通过 cv2.imshow() 函数将其显示出来:

import cv2

image = cv2.imread("image.jpg")
cv2.imshow("Image", image)
cv2.waitKey(0)    # 等待用户键盘输入

保存图像

如果我们需要将已经处理好的图像进行保存,可以用 cv2.imwrite() 函数:

import cv2

image = cv2.imread("image.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imwrite("gray_image.jpg", gray)

转换图像颜色空间

OpenCV-Python 可以将图像从一种颜色空间转换到另一种,例如将彩色图像转换为灰度图像:

import cv2

image = cv2.imread("image.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imshow("Gray Image", gray)
cv2.waitKey(0)

裁剪图像

通过 OpenCV-Python,我们可以对图像进行剪裁操作,只需指定感兴趣区域:

import cv2

image = cv2.imread("image.jpg")
cropped = image[100:500, 200:700]   # 裁剪出感兴趣区域
cv2.imshow("Cropped Image", cropped)
cv2.waitKey(0)

调整图像大小

通过 OpenCV-Python,我们也可以对图像进行尺寸调整:

import cv2

image = cv2.imread("image.jpg")
resized = cv2.resize(image, (800, 600))   # 调整图像大小为 800x600
cv2.imshow("Resized Image", resized)
cv2.waitKey(0)

增强对比度和亮度

OpenCV-Python 可以增强图像的对比度和亮度:

import cv2
import numpy as np

image = cv2.imread("image.jpg")
alpha = 1.5   # 控制对比度
beta = 25    # 控制亮度
new_image = np.clip(alpha * image + beta, 0, 255).astype(np.uint8)   # 增强对比度和亮度
cv2.imshow("New Image", new_image)
cv2.waitKey(0)

图像平移与旋转

OpenCV-Python 可以对图像进行平移和旋转:

import cv2

image = cv2.imread("image.jpg")
(rows, cols) = image.shape[:2]

# 平移图像
M = np.float32([[1, 0, 100], [0, 1, 50]])   # 定义平移矩阵
trans_image = cv2.warpAffine(image, M, (cols, rows))   # 平移图像
cv2.imshow("Translated Image", trans_image)

# 旋转图像
M = cv2.getRotationMatrix2D((cols/2, rows/2), 45, 1)   # 定义旋转矩阵
rotated_image = cv2.warpAffine(image, M, (cols, rows))   # 旋转图像
cv2.imshow("Rotated Image", rotated_image)

cv2.waitKey(0)

应用图像内核和滤波器

OpenCV-Python 可以应用各种内核和滤波器来使图像更清晰、更明亮、更高清:

import cv2
import numpy as np

image = cv2.imread("image.jpg")

# 应用平滑滤波器
kernel = np.ones((5, 5), np.float32) / 25   # 定义平滑内核
smoothed = cv2.filter2D(image, -1, kernel)   # 应用滤波器
cv2.imshow("Smoothed Image", smoothed)

# 应用边缘检测器
edges = cv2.Canny(image, 100, 200)   # 检测图像边缘
cv2.imshow("Edges", edges)

cv2.waitKey(0)

绘制图形和文字

OpenCV-Python 可以用于在图像上绘制线条、矩形和文字等:

import cv2

image = cv2.imread("image.jpg")
cv2.line(image, (0, 0), (400, 400), (0, 0, 255), 5)   # 绘制线条
cv2.rectangle(image, (50, 50), (200, 200), (255, 0, 0), 3)   # 绘制矩形
font = cv2.FONT_HERSHEY_SIMPLEX   # 定义字体
cv2.putText(image, "OpenCV-Python", (400, 50), font, 1, (0, 255, 0), 2)   # 绘制文字
cv2.imshow("Image", image)
cv2.waitKey(0)

以上就是 OpenCV-Python 对图像的基本操作代码的攻略了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:OpenCV-Python 对图像的基本操作代码 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • 简单了解Python读取大文件代码实例

    我将为你详细讲解“简单了解Python读取大文件代码实例”的完整攻略。 什么是大文件 通常情况下,电脑内存的大小是有限制的,其中处理过大的数据文件时,可能会无法一次全部读入内存中进行处理,这时候就需要分块读取,就需要对大文件进行处理。 大文件的读取方式 一、读取整个文件 文件内容读取到内存中,适用于小文件,但是对于大文件(超出内存容量)不适用。代码示例: w…

    python 2023年6月3日
    00
  • python 解压、复制、删除 文件的实例代码

    Python 是一个功能强大的编程语言,提供了许多模块和库,使其可以非常容易地处理文件。解压、复制、删除文件是日常工作中非常常见的操作。下面我将为你讲解如何使用 Python 实现这些操作,包括代码演示以及详细的说明。 解压文件 使用 zipfile 模块实现文件解压 Python 的 zipfile 模块提供了一种简单的方法来解压文件。 首先,使用 zip…

    python 2023年5月20日
    00
  • 使用python中的markdown文件从递归文件夹自动生成Markdown索引

    【问题标题】:Autogenerate Markdown index from a recursive folder with makdown files in python使用python中的markdown文件从递归文件夹自动生成Markdown索引 【发布时间】:2023-04-01 09:30:02 【问题描述】: 您好,我有一个包含许多带有降价 (…

    Python开发 2023年4月8日
    00
  • Python实现学生管理系统并生成exe可执行文件详解流程

    下面是“Python实现学生管理系统并生成exe可执行文件详解流程”的完整攻略。 一、前置条件 在进行学生管理系统的开发之前,需要确保我们的电脑上已经安装好Python环境。如果没有安装Python环境,可以去Python官网(https://www.python.org/downloads/)下载并安装。同时,需要安装第三方库PyQt5和pyinstall…

    python 2023年5月30日
    00
  • python中class的定义及使用教程

    Python中Class的定义及使用教程 概述 在 Python 中,class 是面向对象编程的重要概念之一,它允许我们自定义一些对象类型,并封装相应的属性与方法。在本教程中,我将带领大家从基础到实战,深入掌握 Python 中 class 的定义及使用教程。 Class 的定义 在 Python 中,class 的定义格式通常如下: class 类名: …

    python 2023年5月14日
    00
  • Python下载网易云歌单歌曲的示例代码

    在本攻略中,我们将介绍如何使用Python下载网易云歌单歌曲。以下是一个完整攻略,包括两个示例。 步骤1:获取歌单ID 首先,我们需要获取要下载的歌单ID。在网易云音乐中,每个歌单都有一个唯一的ID。我们可以在歌单页面的URL中找到该ID。例如,歌单页面的URL为https://music.163.com/#/playlist?id=123456,其中123…

    python 2023年5月15日
    00
  • Python读取excel文件中的数据,绘制折线图及散点图

    下面我将为您详细讲解“Python读取excel文件中的数据,绘制折线图及散点图”的完整实例教程。 一、导入所需模块 首先,我们需要导入以下几个模块: import pandas as pd import matplotlib.pyplot as plt pandas模块:用于读取excel文件中的数据,并进行数据处理。 matplotlib.pyplot模…

    python 2023年5月13日
    00
  • 分享Python 的24个编程超好用技巧

    分享Python的24个编程超好用技巧攻略 在分享Python的24个编程超好用技巧时,我们可以采取以下步骤。 1. 确定分享目的和受众 在分享技巧前,首先需要明确自己的目的和受众。分享的目的是要鼓励更多人使用Python、提升编程技巧;而受众则是那些对Python技术有一定了解但想更深入了解Python技巧优化的人群。 2. 确认分享样式与工具 选择我们要…

    python 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部