美文网首页
28. 图像缩放

28. 图像缩放

作者: 十里江城 | 来源:发表于2019-11-12 14:50 被阅读0次

插值方法

四种插值,最近邻域插值 双线性插值 像素关系重采样 立方插值
其中最近邻域插值、双线性插值原理如下:

1) 最近领域插值

两行四列(2, 4)-> (1, 2)
newx = x * (src行/目标行) = 1 * (10 / 5) = 2
newy = y * (src列/目标列) = 2 * (20 / 10) = 4
12.3 = 12

2) 双线性插值(横纵坐标的投影)

A1 = 20% 上 + 80% 下 A2同理
B1 = 30% 左 + 70% 右 B2同理
法一: 最终点 = A1 30% + A2 70%
法二: 最终点 = B1 20% + B2 80%

实现缩放的三种方式

1) opencv api的resize()法

import cv2
import numpy as np
img = cv2.imread('face.jpg', 1)
cv2.imshow('src', img)
imgInfo = img.shape
print('imgInfo: ',  imgInfo)
# 高度
height = imgInfo[0]
# 宽度
width = imgInfo[1]
# 颜色组成方式:3, 一个像素由三个基本元素组成
mode = imgInfo[2]
# 放大 缩小 等比例缩放(宽高比相同)
DstHeight = int(height * 0.5)
DstWidth = int(width * 0.5)

dst = cv2.resize(img, (DstWidth, DstHeight))
cv2.imshow('dst', dst)
cv2.waitKey(0)

image.png

2) 双线性插值原理法

# 1 info  2 空白模板   3 xy
import cv2
import numpy as np
img = cv2.imread('face.jpg', 1)
cv2.imshow('src', img)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
dstHeight = int(height/ 2)
dstWidth = int(width / 2)
# 三维
dstImage = np.zeros((dstHeight, dstWidth, 3), np.uint8) # 0~255
for i in range(0, dstHeight): # 行
    for j in range(0, dstWidth): # 列
        iNew = int(i * (height * 1.0 / dstHeight))
        jNew = int(j * (width * 1.0 / dstWidth))
        dstImage[i, j] = img[iNew, jNew]
cv2.imshow('dst', dstImage)
cv2.waitKey(0)

image.png

3) 仿射变换之缩放矩阵法

# [[A1 A2 B1], [A3 A4 B2]]-> 拆分成 [[A1 A2], [A3 A4]]   [[B1], [B2]]
# newx = A1 * x + A2 * y + B1   newx = 0.5 * x
# newY = A3 * x + A4 * Y + B2
import cv2
import numpy as np
img = cv2.imread('face.jpg', 1)
cv2.imshow('src', img)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
matScale = np.float32([[0.5, 0, 0], [0, 0.5, 0]])
# 仿射变换
dst = cv2.warpAffine(img, matScale, (int(height / 2), int(width / 2)))
cv2.imshow('dst', dst)
cv2.waitKey(0)
image.png

相关文章

  • 28. 图像缩放

    插值方法 四种插值,最近邻域插值 双线性插值 像素关系重采样 立方插值其中最近邻域插值、双线性插值原理如下: 1)...

  • canvas的画布变化

    1 缩放 注意:1 缩放的是整个画布,缩放后,继续绘制的图像会被方法或缩小。 2 当前图像的原点,宽高都被缩放了。...

  • PS内容识别缩放

    Photoshop中的内容识别缩放用于缩放图像时令图像中的主要元素尽量不受缩放的影响.(根据颜色识别,即主要元素颜...

  • 2022-04-06 PythonOpenCV显示图像并能缩放

    常见的显示图像方式 这种显示方式,显示的图像尺寸是图像的原始尺寸,并且窗口不能缩放,有时候需要缩放图像以查看细节,...

  • 常用的像素操作算法:Resize、Flip、Rotate

    Resize 图像缩放是把原图像按照目标尺寸放大或者缩小,是图像处理的一种。 图像缩放有多种算法。最为简单的是最临...

  • OpenCV:线性插值算法

    1.目的 线性插值的目的是什么?线性插值一般是用在如图像缩放,区域缩放美图瘦脸大眼等中.以图像缩放为例.设缩放前图...

  • 文章收藏

    YUV图像的旋转缩放裁剪处理

  • Android基于Shader的图像处理(12)-仿抖音抖动特效

    完整代码查看# AndroidShaderDemo下的ShakeRender 抖动特效和缩放特效很像,除了图像缩放...

  • 31.放大工具

    “缩放工具”。我们在做图像修饰的时候,经常要放大图像。 缩放工具并没有把原图像放大或缩小。也就是说,图片的尺寸是不...

  • 最临近插值和双线性插值

    插值在图像中的应用一般为处理图像的缩放。所谓缩放就是缩小和放大。在所有插值缩放算法中要数最邻近插值最简单最暴力,当...

网友评论

      本文标题:28. 图像缩放

      本文链接:https://www.haomeiwen.com/subject/iffqictx.html