IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> OpenCV图像处理----图片的几何变换 -> 正文阅读

[人工智能]OpenCV图像处理----图片的几何变换

图片的几何变换

1. 图片剪切

python中通过切片的方式就可以截取图片矩阵

import cv2

# 读取图片  cv2读取出的图片都是一个二维矩阵
img = cv2.imread('./lena.jpg', cv2.IMREAD_UNCHANGED)
# 切片 两个点的坐标可以截取图片  
# x1:x2,y1:y2
img1 = img[180:250, 180:310]

cv2.imshow('img', img)
cv2.imshow('img1', img1)
cv2.waitKey()

在这里插入图片描述

2. 图片镜像处理

import cv2
import numpy as np

img = cv2.imread('./lena.jpg')
# 获取到高度宽度
height, width = img.shape[0:2]

# 创建一个原图两倍宽度的全是0(全黑)的矩阵
new_img = np.zeros((height, width * 2, 3), np.uint8)

# 遍历每一个像素点
for row in range(height):
    for col in range(width):
        # 前半部分直接赋值原图
        new_img[row, col] = img[row, col]
        # 后半部分倒序赋值  (水中倒影镜像处理)
        new_img[row, width * 2 - col - 1] = img[row, col]

cv2.imshow('img', img)
cv2.imshow('img1', new_img)
cv2.waitKey()

在这里插入图片描述

3. 图片缩放

resize方法:

  • 参数1为图片矩阵
  • 参数2为元组,放大或缩放后的高度和宽度
import cv2

img = cv2.imread('./lena.jpg')
# 获取到高度和宽度
height, width = img.shape[0:2]
# 定义缩放比例
new_height = int(height * 0.5)
new_width = int(width * 0.5)
# 使用cv2的resize方法进行缩放
new_img = cv2.resize(img, (new_height, new_width))

cv2.imshow('img', img)
cv2.imshow('new_img', new_img)
cv2.waitKey()

在这里插入图片描述

图片操作原理

在计算机程序中,其实是用矩阵来进行描述的,如果我们想对这张图片进行操作,其实就是要对矩阵进行运算。

常见的变换矩阵:

在这里插入图片描述

4. 图片位移

  • 变换矩阵根据上图代入进去运算的
  • 使用warpAffine方法使用变换矩阵
    1. 参数1为图片矩阵
    2. 参数2为变换矩阵
    3. 参数3为原图片的宽度高度组成的元组
import cv2
import numpy as np

img = cv2.imread('./lena.jpg')

# 获取到原图片高度和宽度
height, width = img.shape[0:2]
# 定义缩放比例
new_height = int(height * 1)
new_width = int(width * 1)
# 定义变换矩阵 设置了缩放0.5倍  和  位移缩放的高度宽度的一半
matrixShift = np.float32([
    [0.5, 0, width * 0.5 / 2],
    [0, 0.5, height * 0.5 / 2]
])

# 使用warpAffine方法来使用变换矩阵 
shift_img = cv2.warpAffine(img, matrixShift, (width, height))

cv2.imshow('img', img)
cv2.imshow('shift_img', shift_img)
cv2.waitKey()

在这里插入图片描述

5. 图片旋转

cv2给定apigetRotationMatrix2D() :

参数1:旋转中心点
参数2:旋转度数
参数3:缩放倍数
import cv2

img = cv2.imread('./lena.jpg')
height, width = img.shape[0:2]

# 定义仿射矩阵
M = cv2.getRotationMatrix2D((width / 2, height / 2), 45, 0.5)

# 使用变换矩阵
new_img = cv2.warpAffine(img, M, (width, height))

cv2.imshow('img', new_img)
cv2.waitKey()

6. 图片仿射变换

  • 先定义原图片各顶点的坐标矩阵 左上角?左下角?右上角?右下角

  • 定义各顶点仿射到新顶点的坐标矩阵 对应第一步

  • 使用getAffineTransform()方法组合两个矩阵

  • 使用warpAffine()方法使用变换矩阵

import numpy as np

import cv2

img = cv2.imread('./img/itheima.jpg')
height, width = img.shape[0:2]

# 定义原图片的左上角  左下角 右上角的顶点坐标
matrixSrc = np.float32([[0, 0], [0, height - 1], [width - 1, 0]])
# 定义各顶点仿射到新的顶点
matrixDst = np.float32([[50, 100], [300, height - 200], [width - 300, 100]])
# 组成变换矩阵
matrixAffine = cv2.getAffineTransform(matrixSrc, matrixDst)
# 使用组成的变换矩阵 达到图片仿射转换
new_img = cv2.warpAffine(img, matrixAffine, (width, height))

cv2.imshow('img', new_img)
cv2.waitKey()

7. 图像金字塔

一幅图片的金字塔是一系列以金字塔形状排列的,分辨率逐步降低,而且源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个种植条件才停止采样层级越高,图像越小,分辨率越低。上采样则相反。

在这里插入图片描述

  • 降低图像的分辨率,我们可以称为下采样
import cv2
# 下采样
cv2.pyrDown(img)
  • 提高图像的分辨率,我们可以称为上采样
import cv2
# 上采样
cv2.pyrUp(img)

采样和resize()方法是有区别的:

resize方法把图像缩放,会越来越糊,有马赛克一样的小方块,但是往下采样只是分辨率降低,变得模糊,不会出现小方块,还是可以看得见轮廓。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-11 16:27:02  更:2022-05-11 16:27:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:54:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码