1.2 Python图像的坐标变换-尺度变换

1.2 Python图像的坐标变换-尺度变换

1 算法原理

图像的几何变换,也就是矩阵乘法。

尺度变换是在原来像素(x0,y0)乘以一个倍数,矩阵公式:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-btyGp2OW-1625401041572)(C:\Users\mgboy\AppData\Local\Temp\ksohtml3908\wps1.jpg)]

2 代码

运行代码说明

1.要改变代码中的地址,我的地址说明,我是把待处理图片统一放在一个(同级)image文件夹,用os.listdir(base)读取图片名称列表,base是存放图片文件夹的相对路径,也可以是绝对路径

最后在os.path.join(base,path)代码中合并base和图片名称,得到完整图片地址

2.如果想更改为读取同目录下图片,可以将读取图片路径的几句代码可以改为

原来

base = r'../image'
paths = os.listdir(base)
for path in paths:
    img = cv.imread(os.path.join(base,path), 1)

改为

paths = ['img1.jpg','img2.jpg','img3.png'......]
for path in paths:
    print(path)
    # 读取图片 1 是加载彩色图像。任何图像的透明度都会被忽视。它是默认标志。
    img = cv.imread(path, 1)

3.注意最后的plt.savefig('1.new' + path)是保存plt图像,如果不使用可以注释掉

import os
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

base = r'../image'
paths = os.listdir(base)
for path in paths:
    img = cv.imread(os.path.join(base,path), 1)
    new_img1 = cv.resize(img,None,fx=0.5,fy=0.5,interpolation=cv.INTER_CUBIC)
    height,width = img.shape[:2]
    new_img2 = cv.resize(img,(2*width,2*height),interpolation=cv.INTER_CUBIC)

    # 画图
    plt.figure()
    plt.suptitle('尺度变换')
    plt.subplot(131)
    plt.title('原图')
    plt.imshow(cv.cvtColor(img, cv.COLOR_BGR2RGB))
    plt.subplot(132)
    plt.title('新图:缩放一倍')
    plt.imshow(cv.cvtColor(new_img1, cv.COLOR_BGR2RGB))

    plt.subplot(133)
    plt.title('放大一倍')
    plt.imshow(cv.cvtColor(new_img2, cv.COLOR_BGR2RGB))
    # plt.savefig('2.new' + path)  # 保存图片
    plt.show()

3 效果

image-20210704200441879

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值