图片缩放原理

article/2025/8/26 5:12:04

**shape[0] =图像的高
shape[1] =图像的宽
shape[2] = 图像的图像通道数量
np.zeros(shape, dtype=float, order=‘C’)
示例:

import numpy as np 
Zero =  np.zeros(10)
print(Zero)
print(Zero.shape)
输出:
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]10,)**

方法1:
   利用cv2.resize()函数实现,很简单,直接调用resize函数就能实现

代码:

import cv2 as cv
img = cv.imread('d://python1//image//1.jpg',1)  #参数1:获取图片路径  参数2:1表示彩色  0:表示灰色
imageInfo = img.shape
'''
image[0] =图像的高
image[1] =图像的宽
image[2] = 图像的图像通道数量
'''
hight = imageInfo[0] #图片高
width = imageInfo[1] #图片宽
mode = imageInfo[2] #图像通道数量3   R G B#缩放图像的比例 缩小原图的一半
dstHeight = int(hight * 0.5)
dstWidth = int(width * 0.5)#调整图片的大小
dst = cv.resize(img,(dstWidth,dstHeight))#显示图片
cv.imshow('image1',img)
cv.imshow('image',dst)
cv.waitKey(0)

运行结果:
在这里插入图片描述
可以看到输出的图片一张是原图一张是缩进原图的一半

方法2:最近临域插值法
原图:10 * 20 缩放后:5 * 10

缩放后图像上的的点都来自原图像上的点
缩放后图像的(1,2)点 通过原图像(2,4)点得到

计算公式:
缩放后图片的x坐标 通过原图片上的x坐标得到
那么缩放后图片的x = 缩放后图片上x * (原图上的右下角x坐标 除以 缩放后图片的右下角x坐标)
那么缩放后图片的y = 缩放后图片上y * (原图上的右下角y坐标 除以 缩放后图片的右下角坐标)

例如:
原图 10 * 20 右下角 x坐标是10 右下角y坐标是20
缩放 5 * 10 右下角 x坐标5 右下角y坐标是10
给定任意个缩放后图像的坐标(1,2)
根据公式 1 * (10/5)得到2
2 * (20/10)得到4

以上就是最近临域插值算法

大概思路:
1.获得原图的宽和高
2.获得缩放后图的宽高
3.遍历缩放后图的每一个像素点
4.通过得到的每一个像素点的x坐标和y坐标,利用公式得到一个x和y
5.通过得到的x和y,在原图上得到一个像素点
6.最终当遍历完每一个像素点就得到缩放的图

代码:

import numpy as np
import cv2 as cvimg = cv.imread('d://python1//image//1.jpg',1)
imageInfo = img.shape
'''
image[0] =图像的高
image[1] =图像的宽
image[2] = 图像的图像通道数量
'''
#1.原图宽和高
Hight = imageInfo[0]  #高
Width = imageInfo[1]  #宽#2.缩放图的宽和高
dstHight = int(Hight / 2) #缩放图高
dstWidth = int(Width / 2) #缩放图宽#创建一个数组
dstImage = np.zeros((dstHight,dstWidth,3),np.uint8)  #每一个像素点类型是uint8  范围是[0:255]#3.遍历缩放图的每一个像素点
for x in range(0,dstHight):for y in range(0,dstWidth):#4.利用公式求得新的x和y坐标xNew = int(x * (Width * 1.0 / dstWidth))yNew = int(y * (Hight * 1.0 / dstHight))#5.通过获得新的坐标,在原图上获取该像素点dstImage[x,y] = img[xNew,yNew]
#6.得到缩放好的图
cv.imshow('image',dstImage)
cv.imshow('image1',img)
cv.waitKey(0)

运行结果:
在这里插入图片描述
在这里插入图片描述
3.

import cv2
import numpy as np
img = cv2.imread('d://python1//image//1.jpg',1)imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]matShift = np.float32([[0.5,0,0],[0,0.5,0]]) #23列
dst = cv2.warpAffine(img,matShift,(int(width/2),int(height/2)))
'''
[[0.5,0,0], [0,0.5,0]]
二行三列矩阵 拆分成二行二列 和二行一列二行二列:                          A
[[0.5,0],[0,0.5]]二行一列                          B
[[0],[0]]二行一列                         C
xy    缩放公式:
A*C+B    =  [[0.5*x+0*y],[0*x+0.5*y]] + [[0],[0]]=  [[0.5*x],[0.5*y]]
'''
cv2.imshow('image1',img)
cv2.imshow('image2',dst)
cv2.waitKey(0)

在这里插入图片描述


http://chatgpt.dhexx.cn/article/pDdGYDDw.shtml

相关文章

CSS 3之图片缩放

图片缩放 1. 通过标记设置图片大小2. CSS 3中的 width 和 height3. CSS 3 中的 max-width 与 max-height 1. 通过标记设置图片大小 使用 img 的描述标记 height 和 width 能设置图片大小; height 和 width 分别表示图片的高度和宽度,可以是数值或百分比…

1缩放图片

图片缩放 最近临域插值 双线性插值 原理 src(原图像) 1020 dst(目标图片) 510可以用原图像上的点src表示目标图像上的点dst #例如:原图像的点(2,4)表示目标图像的点(1,2)知道目标图像&#xf…

CSS学习37:图片缩放

语法: 1、x y 单独设置 transform: scale(x轴缩放倍数, y轴缩放倍数); 2、统一设置 transform: scale(缩放倍数); 一般情况下, 只为scale设置一个值, 表示x轴和y轴等比例缩放 transform: scale(缩放倍数); scale值大于1表示放大, scale值小于1表示缩小 案例效果&a…

【图片resize】图片三种缩放方式/letterbox_image实现

文章目录 1 总体简介2 实现效果2.1 直接缩放,不怕变形2.2 不变形缩放/letterbox_image2.2.1 不变形缩放,两端填充灰边2.2.2 不变形缩放,一端填充灰边 3 代码运行 1 总体简介 对图像进行预处理操作的时候,一般有两种缩放方式。 一…

正在解析主机 nginx.org... 失败:域名解析暂时失败。 wget: 无法解析主机地址 “nginx.org”

在安装Nginx的时候遇到如下的问题 正在解析主机 nginx.org… 失败:域名解析暂时失败。 wget: 无法解析主机地址 “nginx.org” 命令如下: [rootlocalhost local]# wget http://nginx.org/download/nginx-1.12.2.tar.gz开始以为是官网不能下载&#xff0c…

安装虚拟机后,主机浏览器访问变慢,显示正在解析主机问题

先找到 控制面板 点击 查看网络状态和任务 选 更改适配器设置 双击它 点 属性 双击第四个选项 都改成自动获取。

CentOS wget命令: 无法解析主机地址 域名解析失败

再使用wget命令中redis.io下载Redis安装包时候报错如下: 百度了许多方法都没有解决,综合各种方式以后,终于给解决了这个问题。方法如下: 首先使用 ifconfig命令查看你的IP地址,如果是这种状态就需要去手动添加 在你的…

问题:正在解析主机 XXX失败:未知的名称或服务。wget: 无法解析主机地址 “XXX”

问题:新安装的ubuntu16.04使用wget命令拉取llvm安装包出错 解决方法: 修改DNS即可 sudo vim /etc/resolv.conf #修改nameserver 127.0.1.1 为 8.8.8.8

wget无法解析主机地址

备份恢复机检查配置好网卡信息后,wget包显示无法解析主机地址 排查过程 ping 外网地址不通 ping 外网IP通 定位可能解析有问题 查看解析服务器信息并修改恢复 vim /etc/sysconfig/network-scripts/ifcfg-eth0 //编辑网络信息 vim /etc/resolv.conf //编辑解析地址 总结&#x…

配置在线 YUM 源仓库时 wget 无法解析主机地址

文章目录 一、现象二、解决 一、现象 配置在线源时,第一步将在线 YUM 源配置文件下载到本地我就卡住了,如下所示: [rootlocalhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo --2021-0…

wget报错处理无法解析主机或者无反应

[rootlocalhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo --2022-12-02 16:57:26-- http://mirrors.aliyun.com/repo/Centos-7.repo 正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 失败:未知的名…

win10如何解决浏览器出现“正在解析主机”的问题,很大原因是虚拟机,虚拟网卡,小米随身wifi导致的,DNS优选下载,

如何解决浏览器出现“正在解析主机”的问题 ,很大原因虚拟机,虚拟网卡,小米随身wifi导致的 方法(一) 1. 把所有的全部禁止; 1.1 很大原因是虚拟网卡导致的,或卸载对应的虚拟机 2. 小米随身WiFi 也是导致网络慢的原因,把小米随身WiFi 拔下来,关点软件;或卸载驱动软件 如果还不行…

CentOS 7 下载yum源报错:正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 失败:未知的名称或服务。

下载yum源报错:未知的名称或服务解决方法 错误信息解决方法 错误信息 正在解析主机mirrors.aliyun.com (mirrors.aliyun.com)… 失败:未知的名称或服务。wget: 无法解析主机地址“mirrors.aliyun.com” 解决方法 解决方法 : 登录root用户…

主机名解析

主机名解析,比如:本地系统将域名(wenlong.wen.com)转换为IP地址(192.168.x.x) ①Unix初期,域名解析很容易,当时计算机网络有4个主机,其中每个主机的名称和地址都放在/etc/hosts这个静态数据库中 ②如今,网…

正在解析主机,路由器打不开个别网页,已解决

在连接路由器的情况下,无论上无线上网,还是网线与路由器直接相连,360浏览器左下角都会经常显示正在解析主机,个别网站能打开,个别网站,有时能打开,有时怎么搞也不行.一般反复重启路由器可以暂时解决问题. 关于通常的解决方案,一般无效: 360急救箱, 重启本地连接或无线连接,重…

正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 失败:未知的名称或服务。wget: 无法解析主机地址 “mirrors.aliyun.com”

找到如下配置文件:/etc/resolv.conf vim /etc/resolv.conf 添加如下源地址: nameserver 8.8.8.8 nameserver 8.8.4.4 nameserver 223.5.5.5 nameserver 223.6.6.6 保存退出。就可以下载啦!

浏览器正在解析主机时间过长及网页加载时间过长的问题

问题1 解析主机时间长 hosts文件乱了,直接全删了,保存就行使用虚拟机后,打开网页一直在解析主机非常慢,将下面的虚拟机网络适配器VMnet8关闭即后打开网页飞快 问题2 打开网页转圈时间长 很有可能打开了百度网盘下载东西,我个人…

正在解析主机……失败:未知的名称或服务,wget无法解析主机地址。

无法解析主机地址 在centos7系统中安装python3时出现:无法解析主机地址问题。 当在终端中输入: wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tar.xz出现 正在解析主机 www.python.org (www.python.org)… 失败:未知的名称…

linux解析主机域名失败,centos无法解析主机域名

centos无法解析主机域名,主机,视频教程,教程,解决方法,长度 centos无法解析主机域名 易采站长站,站长之家为您整理了centos无法解析主机域名的相关内容。 问题还原: 正在解析主机 cdn.openbsd.org (cdn.openbsd.org)... 失败:域名解析暂时失败…

关于“正在解析主机 mirrors.163.com (mirrors.163.com)... 失败:未知的名称或服务。wget: 无法解析主机地址 “mirrors.163.com””问题处理

centos7虚拟机使用wget命令时 出现: 解决办法:1.输入命令 更改nameserver 2.输入命令 vim /etc/sysconfig/network-scripts/ifcfg-ens33 确保 步骤1和2中DNS相同 后 3.执行 service network restart 再执行wget(多尝试几次)