【计算机视觉】人脸算法之图像处理基础知识(四)

图像的几何变换

图像的几何变换是指在不改变图像内容的前提下对图像的像素进行空间几何变换。主要包括图像的平移变换、镜像变换、缩放和旋转等。

1.插值算法

插值通常用来放缩图像大小,在图像处理中常见的插值算法有最邻近插值法、双线性插值法、二次立方、三次立方插值等。在opencv中的实现如下。

python 复制代码
import cv2

imgpath = "images/img1.jpg"
img = cv2.imread(imgpath, 1) #以灰度化的方式加载图像
img = cv2.resize(img, (img.shape[1]//2, img.shape[0]//2),interpolation=cv2.INTER_LINEAR) #采用双线性插值方式,将图像面积缩小为原图的1/4
cv2.imshow("dst", img)
cv2.waitKey(0) 

opencv中常用的插值方式

复制代码
cv2.INTER_NEAREST:最邻近插值
cv2.INTER_LINEAR:    双线性插值
cv2.INTER_CUBIC:      立方插值(适用于放大)

2.图像平移

图像的平移变换就是将图像所有的像素坐标加上指定的水平偏移量和垂直偏移量。在opencv中可以使用warpAffine函数实现

python 复制代码
import cv2
import numpy as np

imgpath = "images/img1.jpg"
img = cv2.imread(imgpath, 1) 
img = cv2.resize(img, (0, 0), fx=0.5, fy=0.5) 
height, width = img.shape[:2]

# 定义平移向量
tx = 50  # 水平平移距离
ty = 30  # 垂直平移距离
translation_matrix = np.float32([[1, 0, tx], [0, 1, ty]])
# 应用平移变换
translated_img = cv2.warpAffine(img, translation_matrix, (width, height))
cv2.imshow('Original Image', img)
cv2.imshow('Translated Image', translated_img)
cv2.waitKey(0)
相关推荐
科研小白_1 小时前
基于遗传算法优化BP神经网络(GA-BP)的数据时序预测
人工智能·算法·回归
Terry Cao 漕河泾1 小时前
基于dtw算法的动作、动态识别
算法
paid槮3 小时前
OpenCV图像形态学详解
人工智能·opencv·计算机视觉
Miraitowa_cheems4 小时前
LeetCode算法日记 - Day 73: 最小路径和、地下城游戏
数据结构·算法·leetcode·职场和发展·深度优先·动态规划·推荐算法
野蛮人6号4 小时前
力扣热题100道之560和位K的子数组
数据结构·算法·leetcode
Swift社区5 小时前
LeetCode 400 - 第 N 位数字
算法·leetcode·职场和发展
fengfuyao9856 小时前
BCH码编译码仿真与误码率性能分析
算法
小白不想白a6 小时前
每日手撕算法--哈希映射/链表存储数求和
数据结构·算法
剪一朵云爱着6 小时前
力扣2080. 区间内查询数字的频率
算法·leetcode
落日漫游7 小时前
数据结构笔试核心考点
java·开发语言·算法