OpenCV 学习6-图像平移

数学基础-线性代数-学习系列

计算机视觉-OpenCV-学习系列

本文是 OpenCV 学习5-你知道图像旋转的原理吗? 的一个补充

图像平移就是着沿x轴和y轴将其移动指定数量的像素。假设需要移动的像素为 t x tx tx和 t y ty ty,这个线性变换可以表示为一个矩阵:
M = [ 1 0 t x 0 1 t y ] M = \begin{bmatrix} 1 & 0 & t_x \\ 0 & 1 & t_y \end{bmatrix} M=[1001txty]

📌 同时需要了解的是 t x tx tx为正值将使图像向右移动,负值将使图像向左移动; t y ty ty为正值将使图像向下移动,负值将使图像向上移动。

代码示例说明

  1. 读取图像
  2. 定义一个转换矩阵
  3. 使用warpAffine()函数进行图像的平移
  4. 显示图像
python 复制代码
import cv2
import numpy as np
import os

# 1.读取图像
img_path = "img/dog.jpg"
if not os.path.exists(img_path):
    raise FileNotFoundError(f"未找到图像文件{img_path}")

img = cv2.imread(img_path, cv2.IMREAD_COLOR)

height, width = img.shape[:2]

# 向右平移100像素,向上平移100像素
tx = 100
ty = -100

# 2.创建一个转换矩阵,使用tx和ty,它是一个NumPy数组
translation_matrix = np.array([
    [1, 0, tx],
    [0, 1, ty]
], dtype=np.float32)

# 3.使用cv2.warpAffine()函数进行图像的平移
translated_image = cv2.warpAffine(src=img, M=translation_matrix, dsize=(width, height))

# 4.显示图像
cv2.imshow('Translated image', translated_image)
cv2.imshow('Original image', img)


cv2.waitKey(0)
cv2.destroyAllWindows()
相关推荐
sali-tec5 天前
C# 基于OpenCv的视觉工作流-章27-图像分割
图像处理·人工智能·opencv·算法·计算机视觉
saoys5 天前
Opencv 学习笔记:腐蚀操作 + 轮廓标记 + 分水岭分割
笔记·opencv·学习
saoys5 天前
Opencv 学习笔记:距离变换(DIST_L1 算法实战 + 归一化)
笔记·opencv·学习
guygg885 天前
图像匹配技术:相关匹配、Hausdorff距离匹配与基于距离变换的Hausdorff距离匹配
图像处理·opencv·计算机视觉
AI科技星5 天前
物理世界的几何建构:论统一场论的本体论革命与概念生成
人工智能·opencv·线性代数·算法·矩阵
fie88895 天前
基于Matlab实现的指纹识别系统流程
opencv·计算机视觉·matlab
sali-tec5 天前
C# 基于OpenCv的视觉工作流-章26-图像拼接
图像处理·人工智能·opencv·算法·计算机视觉
智驱力人工智能6 天前
机场鸟类活动智能监测 守护航空安全的精准工程实践 飞鸟检测 机场鸟击预防AI预警系统方案 机场停机坪鸟类干扰实时监测机场航站楼鸟击预警
人工智能·opencv·算法·安全·yolo·目标检测·边缘计算
Σίσυφος19006 天前
OpenCV 之双线性插值
人工智能·opencv·计算机视觉
格林威6 天前
Baumer相机金属粉末铺粉均匀性评估:用于增材制造过程监控的 7 个实用技巧,附 OpenCV+Halcon 实战代码!
人工智能·opencv·视觉检测·制造·工业相机·智能相机·堡盟相机