Python实现简单图像缩放与旋转
作者:云龙弓手 发布时间:2022-02-19 05:48:17
1. 图像缩放
1.2. 使用命令
import cv2
# 缩放
def resize(img, k, inter):
res = cv2.resize(img, None, fx=k, fy=k, interpolation=inter)
return res
参数设定(interpolation):
0:最近邻插值
1:双线性插值
2:基于局部像素的重采样
3:基于4*4像素邻域的三次插值
4:基于8*8像素邻域的Lanczos插值
img_row = cv2.imread(r'picture4.jpg')
cv2.imshow('origin_picture', img_row)
cv2.waitKey(0)
inters = [cv2.INTER_NEAREST, cv2.INTER_LINEAR, cv2.INTER_AREA, cv2.INTER_CUBIC, cv2.INTER_LANCZOS4]
for inter in inters:
res1 = resize(img_row, 2, inter)
cv2.imshow('res1', res1)
cv2.waitKey(0)
position = 'pic_resize' + '_' + str(inter) + '.jpg'
cv2.imwrite(position, res1)
1.2. 原理介绍
几种方法原理简介:
最近邻插值:将目标图像中的点对应原图像中最近邻整数坐标点的像素值双线性插值:f(x,y)为二元函数,假设我们知道f(x0,y0), f(x1,y1),f(x0,y1), f(x1,y0)四个点的值。这四个点确定一个矩形,我们希望通过插值得到矩形内任意点的函数值。于是我们在x方向上进行两次线性插值,y方向上一次线性插值。综合后得到以下公式:
局部像素的重采样:如果放大图像的比例是整数倍,与最近邻插值类似,如果放大的比例不是整数倍,则会采用线性插值三次插值:给定n+1个点,a=x0<x1 < . . . <xn=b,以及他们的函数值f (x i) , i = 0 , 1 , 2 , . . . n ,在每个区间 [ x i , x i + 1 ]上,确定一个三次多项式,每个三次多项式满足共4n-2个条件,剩余条件由边界条件确定:
Lanczos插值:
需要通过计算模板中的权重信息来计算x对应的值。对于一维信息,假如我们输入的点集为X,那么,Lanczos对应有个窗口模板Window,窗口中每个位置的权重计算如下,通常a取2或者3.根据计算出来的权重,然后再根据x即可求出对应的加权平均:
1.3. 方法比较
速度比较:
效果比较:
最近邻插值:最简单,但是边缘没有缓慢的过渡区域,导致放大图像边缘容易出现锯齿双线性插值:计算较最近邻复杂,但是能很好避免边缘锯齿的现象区域重采样:图像放大时效果类似于双线性插值三次插值法:计算较为复杂,但是具有良好的稳定性和平滑性Lanczos插值:计算最为复杂,效果最好,但是耗时最长1.4. 实验结果
最近邻:
双线性:
基于局部像素的重采样:
三次插值法:
Lanczos插值法:
2. 旋转
2.1. 使用命令
import imutils
# 旋转
def rotate(img, angle):
res = imutils.rotate_bound(img, angle)
return res
img_row = cv2.imread(r'picture4.jpg')
res2 = rotate(img_row, 45)
cv2.imshow('res2', res2)
cv2.waitKey(0)
cv2.imwrite(r'pic_rotate.jpg', res2)
2.2. 实验效果
来源:https://blog.csdn.net/weixin_43909400/article/details/122499906
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 在日常的生活和工作中,我们经常会遇到一些大小问题,其中有很多的问题,都是可以使用一些简单的Python代码就能解决。比如不久前的复旦大佬,用
- MySQL Group By用法我们现在回到函数上。记得我们用 SUM 这个指令来算出所有的 Sales (营业额)吧!如果我们的需求变成是
- 好记星不如烂笔头,适时的总结梳理知识让人更轻松愉快。今天总结下学习和开发中遇到的JavaScript执行顺序的问题,今天挖个坑,以后会慢慢填
- 在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限
- 我们在.NET程序的开发过程中,常常需要和用户进行信息交互,比如执行某项操作是否成功,“确定”还是“取消”,以及选择“确定”或“取消”后是否
- 在学习tensorflow的过程中,有一个问题,tensorflow在训练的过程中读取的是二进制图像数据库文件,而不是图像文件,因此在进行训
- 前言:本文介绍如何构建简单线性回归模型及计算其准确率,最后介绍如何持久化模型。线性回归模型线性回归表示发现函数使用线性组合表示输入变量。简单
- 如果我们想对一个表的每一行做出比较复杂的操作,大多会想到用游标,本文中,我们将换一种思路,用SQL Server 2005中的新函数ROW_
- gojson是快速解析json数据的一个golang包,你使用它可以快速的查找json内的数据安装 go get github.com/wi
- Access SQL 函数 收藏 ▲日期/时间CDate 将字符串转化成为日期 select CDate("2005/
- 目录1.准备工作2. 开始2.1 生成控件2.2 定义输入和计算函数2.3 绑定键盘事件2.4 循环3.全部代码4. 结束语做一个计算器,这
- 这个格式是我自创的,经常有人问我为什么,这里做个简单总结:1、分类,一个模块或者同类功能定义为一类定义,每类定义之间用段落隔开。2、分级,每
- 使用到的函数是curl_init, curl_setopt, curl_exec,curl_close。默认是GET方法,可以选择是否使用H
- 本文实例讲述了Python基于opencv的图像压缩算法。分享给大家供大家参考,具体如下:插值方法:CV_INTER_NN - 最近邻插值,
- 主要步骤1.生成普通python数组(bytearray(),os.urandom())2.转换成numpy数组(numpy.array()
- 监控中,通常要使用图片更直观的看出集群的运行状况。以下是一个简单的demo,通过rrdtool生成动态的图片。Python3, tornad
- 本文实例为大家分享了Python实现图片格式转换的具体代码,供大家参考,具体内容如下碰上这样一个情景:我从网络上下载了一张表情包图片,存放在
- 一、使用三种方法实现0-n累加求和定义函数分别使用while循环、for循环、递归函数实现对0-n的累加求和1、使用while循环定义一个累
- 列表的添加1)+ 添加2)append 追加一次只能添加一个元素到列表中,适合用于循环里3)extend 拉伸可一次添加多个元素到列表中4)
- 1。在Asp页面首部<head>加入 Response.Buffer =