博客
关于我
OpenCV 中的图像转换
阅读量:799 次
发布时间:2023-02-23

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

OpenCV 中的图像转换 在Python中,使用OpenCV进行图像转换是一种常见的需求。以下是一些基本的图像转换方法及其代码示例:

### 转灰度图像 将彩色图像转换为灰度图像,以简化处理。

```python
import cv2
import numpy as np

# 加载彩色图像

img = cv2.imread('image.jpg')

# 将彩色图像转换为灰度图像

gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 显示原始图像和灰度图像

cv2.imshow('Original Image', img)
cv2.imshow('Grayscale Image', gray_img)

cv2.waitKey(0)  # 等待用户按键,关闭窗口

cv2.destroyAllWindows()  # 清除所有OpenCV创建的窗口

### 旋转图像 通过指定角度旋转图像。

```python
import cv2
import numpy as np

# 加载图像

img = cv2.imread('image.jpg')

# 设置旋转中心(左上角坐标)和旋转角度

center = (img.shape[1] // 2, img.shape[0] // 2)  # 图像中心点
angle = 45
scale = 1.0

# 计算旋转矩阵

M = cv2.getRotationMatrix2D(center, angle, scale)

# 旋转图像

rotated_img = cv2.warpAffine(img, M, (img.shape[1], img.shape[0]))

cv2.imshow('Rotated Image', rotated_img)

cv2.waitKey(0)
cv2.destroyAllWindows()

### 调整图像大小 改变图像的尺寸以适应不同的应用场景。

```python
import cv2
import numpy as np

# 加载图像

img = cv2.imread('image.jpg')

# 调整图像大小为(宽, 高)

new_size = (500, 300)
resized_img = cv2.resize(img, new_size, interpolation=cv2.INTER_AREA)

cv2.imshow('Resized Image', resized_img)

cv2.waitKey(0)
cv2.destroyAllWindows()

### 测试用例 假设我们有一个800x600像素的图像,我们想要将它旋转45度,然后调整其大小为500x300。

```python

import cv2
import numpy as np

# 加载图像

img = cv2.imread('input_image.jpg')

# 设置旋转中心、角度和缩放比例

center = (img.shape[1] // 2, img.shape[0] // 2)
angle = 45
scale = 1.0

# 计算旋转矩阵

M = cv2.getRotationMatrix2D(center, angle, scale)

# 旋转图像

rotated_img = cv2.warpAffine(img, M, (img.shape[1], img.shape[0]))

# 调整图像大小

new_size = (500, 300)
resized_img = cv2.resize(rotated_img, new_size, interpolation=cv2.INTER_AREA)

# 显示结果图像

cv2.imshow('Rotated and Resized Image', resized_img)
cv2.waitKey(0)
cv2.destroyAllWindows()}

### 人工智能大模型应用示例 假设我们正在开发一个图像识别应用程序,需要预处理输入的图像以适应机器学习的输入格式。可以使用上述代码将彩色图像转换为灰度图像,然后调整其大小,以便于模型的训练。

具体场景:在图像识别模型中,通常需要将输入图像调整为固定尺寸(如224x224),因为深度学习模型的输入通常是固定的。

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

你可能感兴趣的文章
php echo 输出 锘?... 乱码问题
查看>>
PHP empty、isset、isnull的区别
查看>>
ReferenceQueue的使用
查看>>
PHP FastCGI进程管理器PHP-FPM的架构
查看>>
referenceQueue用法
查看>>
php flush()刷新不能输出缓冲的原因分析
查看>>
Referenced classpath provider does not exist: org.maven.ide.eclipse.launchconfig
查看>>
Refactoring-Imporving the Design of Exsiting Code — 代码的坏味道
查看>>
PHP imap 远程命令执行漏洞复现(CVE-2018-19518)
查看>>
php include和require
查看>>
ref 和out 区别
查看>>
php JS 导出表格特殊处理
查看>>
php json dom解析
查看>>
ReentrantReadWriteLock读写锁解析
查看>>
php laravel实现依赖注入原理(反射机制)
查看>>
php laravel请求处理管道(装饰者模式)
查看>>
ReentrantReadWriteLock读写锁底层实现、StampLock详解
查看>>
PHP mongoDB 操作
查看>>
ReentrantLock读写锁
查看>>
ReentrantLock的公平锁与非公平锁
查看>>