OpenCV--图像的基本变换

图像的基本变换

代码和笔记

python 复制代码
import cv2
import numpy as np

"""
图像的基本变换
"""

cat = cv2.imread('./img/cat.jpeg')

"""
缩放 
"""
# dsize:(499, 360)这里的宽高和numpy的行列是反过来的 interpolation插值算法
new_cat = cv2.resize(cat, (499, 360), interpolation=cv2.INTER_NEAREST)
# 按xy轴的比例进行缩放
new_cat1 = cv2.resize(cat, dsize=None, fx=1.5, fy=0.5, interpolation=cv2.INTER_LINEAR)

cv2.imshow('new_cat', new_cat)
cv2.imshow('new_cat1', new_cat1)

"""
翻转
"""
# 0表示上下翻转,>0表示左右  <0左右上下
new_cat2 = cv2.flip(cat, 0)

cv2.imshow('new_cat2', new_cat2)

"""
旋转
"""
# ROTATE_90_CLOCKWISE 90度顺时针 ROTATE_180 180度 ROTATE_90_COUNTERCLOCKWISE 逆时针90度
new_cat3 = cv2.rotate(cat, rotateCode=cv2.ROTATE_90_COUNTERCLOCKWISE)
cv2.imshow('new_cat3', new_cat3)

"""
仿射变换(原图和一个矩阵进行运算)
"""
# 平移操作
# 变换矩阵,至少是float32位 改变200位置的数,往由右平移,变成负数就是往左,100位置的数,往下,变成负数就是往上
M = np.float32([[1, 0, 200], [0, 1, 100]])
new_cat4 = cv2.warpAffine(cat, M, (499, 360))
cv2.imshow('new_cat4', new_cat4)

# 在进行旋转操作时,不方便计算变换矩阵
# 获取变换矩阵 (100, 100), 15, 1 以坐标(100, 100)的点旋转(规定按照逆时针)15度,1表示不缩放
M1 = cv2.getRotationMatrix2D((100, 100), 15, 1)

# 通过三个点不通过角度确定变换角度,需要原始图片的三个点坐标和变换后的三个对应坐标
src = np.float32([[200, 100], [300, 100], [200, 300]])
dst = np.float32([[100, 150], [360, 200], [280, 120]])
M2 = cv2.getAffineTransform(src, dst)

# 透视变换--把斜的图变正
# 获取变换矩阵,需要原图四个坐标和变换后的四个对应坐标
src1 = np.float32([[200, 100], [300, 100], [200, 300], [150, 240]])
dst1 = np.float32([[0, 0], [360, 0], [0, 120], [360, 120]])
M3 = cv2.getPerspectiveTransform(src1, dst1)
# (360, 120)输出大小
new_cat5 = cv2.warpPerspective(cat, M3, (360, 120))

cv2.waitKey(0)
cv2.destroyAllWindows()
相关推荐
_.Switch几秒前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
一个闪现必杀技19 分钟前
Python入门--函数
开发语言·python·青少年编程·pycharm
AI完全体20 分钟前
【AI知识点】偏差-方差权衡(Bias-Variance Tradeoff)
人工智能·深度学习·神经网络·机器学习·过拟合·模型复杂度·偏差-方差
GZ_TOGOGO32 分钟前
【2024最新】华为HCIE认证考试流程
大数据·人工智能·网络协议·网络安全·华为
sp_fyf_202432 分钟前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-02
人工智能·神经网络·算法·计算机视觉·语言模型·自然语言处理·数据挖掘
新缸中之脑34 分钟前
Ollama 运行视觉语言模型LLaVA
人工智能·语言模型·自然语言处理
小鹿( ﹡ˆoˆ﹡ )40 分钟前
探索IP协议的神秘面纱:Python中的网络通信
python·tcp/ip·php
卷心菜小温1 小时前
【BUG】P-tuningv2微调ChatGLM2-6B时所踩的坑
python·深度学习·语言模型·nlp·bug
胡耀超1 小时前
知识图谱入门——3:工具分类与对比(知识建模工具:Protégé、 知识抽取工具:DeepDive、知识存储工具:Neo4j)
人工智能·知识图谱
陈苏同学1 小时前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm