【图像处理】- 基本图像操作

devtools/2025/2/10 18:01:52/

基本图像操作详解

基本图像操作是图像处理的基础,涵盖了对图像进行简单但重要的变换。以下是几种常见的基本图像操作及其详细说明:

1. 裁剪 (Cropping)

描述:从原始图像中提取一个矩形区域。

实现方法

  • 使用图像的坐标系指定左上角和右下角的坐标。
  • 提取指定区域内的像素值。

Python代码示例 (使用OpenCV)

import cv2# 读取图像
image = cv2.imread('input_image.jpg')# 定义裁剪区域的坐标 (x, y, width, height)
x, y, w, h = 50, 50, 200, 200
cropped_image = image[y:y+h, x:x+w]# 显示结果
cv2.imshow('Cropped Image', cropped_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

2. 缩放 (Resizing)

描述:调整图像的大小,可以放大或缩小。

实现方法

  • 指定新的宽度和高度。
  • 使用插值算法(如最近邻、双线性、双三次)来计算新像素值。

Python代码示例 (使用OpenCV)

import cv2# 读取图像
image = cv2.imread('input_image.jpg')# 定义新的尺寸
new_width = 300
new_height = 400
resized_image = cv2.resize(image, (new_width, new_height), interpolation=cv2.INTER_LINEAR)# 显示结果
cv2.imshow('Resized Image', resized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

3. 旋转 (Rotation)

描述:将图像绕某个点旋转一定角度。

实现方法

  • 计算旋转矩阵。
  • 应用仿射变换。

Python代码示例 (使用OpenCV)

import cv2
import numpy as np# 读取图像
image = cv2.imread('input_image.jpg')# 获取图像中心
height, width = image.shape[:2]
center = (width // 2, height // 2)# 定义旋转角度和缩放比例
angle = 45
scale = 1.0# 获取旋转矩阵
rotation_matrix = cv2.getRotationMatrix2D(center, angle, scale)# 应用旋转
rotated_image = cv2.warpAffine(image, rotation_matrix, (width, height))# 显示结果
cv2.imshow('Rotated Image', rotated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

4. 翻转 (Flipping)

描述:水平或垂直翻转图像。

实现方法

  • 水平翻转:沿y轴翻转。
  • 垂直翻转:沿x轴翻转。
  • 水平垂直翻转:同时沿x轴和y轴翻转。

Python代码示例 (使用OpenCV)

import cv2# 读取图像
image = cv2.imread('input_image.jpg')# 翻转类型
flip_code = 1  # 1: 水平翻转, 0: 垂直翻转, -1: 水平垂直翻转
flipped_image = cv2.flip(image, flip_code)# 显示结果
cv2.imshow('Flipped Image', flipped_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

5. 颜色空间转换 (Color Space Conversion)

描述:将图像从一种颜色空间转换为另一种颜色空间。

常见颜色空间

  • RGB:红绿蓝三原色模型。
  • Grayscale:灰度图像。
  • HSV:色调、饱和度、亮度模型。
  • YUV:亮度、色差模型。

Python代码示例 (使用OpenCV)

import cv2# 读取图像
image = cv2.imread('input_image.jpg')# 转换为灰度图像
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 转换为HSV图像
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)# 显示结果
cv2.imshow('Grayscale Image', gray_image)
cv2.imshow('HSV Image', hsv_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

6. 通道分离与合并 (Splitting and Merging Channels)

描述

  • 分离:将多通道图像拆分为单个通道。
  • 合并:将多个单通道图像组合成一个多通道图像。

Python代码示例 (使用OpenCV)

import cv2# 读取图像
image = cv2.imread('input_image.jpg')# 分离通道
b, g, r = cv2.split(image)# 合并通道
merged_image = cv2.merge([b, g, r])# 显示结果
cv2.imshow('Blue Channel', b)
cv2.imshow('Green Channel', g)
cv2.imshow('Red Channel', r)
cv2.imshow('Merged Image', merged_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述


http://www.ppmy.cn/devtools/157696.html

相关文章

什么是Prompt工程?

什么是提示工程? Prompt一词,在英语中主要用作动词、形容词、名词和副词,主要意思包括“促使,导致;鼓励,提示;迅速的,立刻的;准时地”等。 在人工智能的语境下&#xf…

k8s中,一.service发布服务,二.dashboard:基于网页的k8s管理插件,三.资源服务与帐号权限

一.service资源对内发布服务Cluster IP对外发布服务NodePortIngress 二.dashboard:基于网页的k8s管理插件 三.资源服务与帐号权限一.service:用户无法预知pod的ip地址以及所在的节点,多个相同的pod如何访问他们上面的服务功能:1.服务自动感知:pod迁移后访问service的ip,不受影响…

HarmonyOS:查询设备信息

说明 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 部分参数返回值为default的,会在正式发布的版本中配置。 本模块接口返回设备常量信息,建议应用只调用一次,不需要频繁调用…

软件工程-软件需求分析基础

基本任务 准确地回答“系统必须做什么?”,也就是对目标系统提出完整、准确、清晰、具体的要求 目标是,在分析阶段结束之前,系统分析员应该写出软件需求规格说明书,以书面形式准确地描述软件需求。 准则 1&#xff…

基于机器学习的DDoS检测系统实战

基于机器学习的DDoS检测系统实战(PythonScikit-learn)|毕业设计必备 摘要:本文手把手教你从0到1实现一个轻量级DDoS攻击检测系统,涵盖数据预处理、特征工程、模型训练与可视化分析。 一、项目背景与意义 DDoS&#x…

RK3568上使用C++结合V4L2拉流,并RKMPP硬件编解码,并保存为MP4文件

在RK3568平台上使用C结合V4L2捕获视频流,并通过RKMPP进行硬件编码后保存为MP4文件,可以按照以下步骤实现: 1. 环境准备 硬件:RK3568开发板、摄像头模块。软件依赖: Linux内核支持V4L2。Rockchip MPP库(RKM…

接入 deepseek 实现AI智能问诊

1. 准备工作 注册 DeepSeek 账号 前往 DeepSeek 官网 注册账号并获取 API Key。 创建 UniApp 项目 使用 HBuilderX 创建一个新的 UniApp 项目(选择 Vue3 或 Vue2 模板)。 安装依赖 如果需要在 UniApp 中使用 HTTP 请求,推荐使用 uni.requ…

Linux系统 环境变量

环境变量 写在前面概念查看环境变量main函数的参数argc & argvenv bash环境变量 写在前面 对于环境变量,本篇主要介绍基本概念及三四个环境变量 —— PATH、HOME、PWD。其中 PATH 作为 “ 敲门砖 ”,我们会更详细讲解;理解环境变量的全局…