精华内容
下载资源
问答
  • Python批量更改图片分辨率
    2020-12-03 00:48:42

    Python批量更改图片分辨率

    # -*- coding: utf-8 -*-

    import Image

    import glob, os

    #图片批处理

    def timage():

    for files in glob.glob('~/pic/*.JPG'):

    filepath,filename = os.path.split(files)

    filterame,exts = os.path.splitext(filename)

    #输出路径

    opfile = r'~/pic/out/'

    #判断opfile是否存在,不存在则创建

    if (os.path.isdir(opfile)==False):

    os.mkdir(opfile)

    im = Image.open(files)

    w,h = im.size

    #im_ss = im.resize((400,400))

    #im_ss = im.convert('P')

    im_ss = im.resize((int(w*0.12), int(h*0.12)))

    im_ss.save(opfile+filterame+'.jpg')

    if __name__=='__main__':

    timage()

    print u'坤子提醒您,批量图片处理完成' 本文由

    坤子的blog 原创

    标签:

    版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com

    特别注意:本站所有转载文章言论不代表本站观点!

    本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

    更多相关内容
  • python 实现图片像素大小设置,可以实现图像的任意大小输出。
  • 使用PIL调整图片分辨率

    千次阅读 2021-01-15 03:01:54
    需求:因项目需求中有对照片分辨率的具体要求,需要进行已有照片的批量分辨率处理。已有照片统一为1024*768分辨率,要求处理成320*240 / 240*200两种分辨率形式。难点:对方要求中的240*200分辨率大小与我们已有照片...

    需求:

    因项目需求中有对照片分辨率的具体要求,需要进行已有照片的批量分辨率处理。已有照片统一为1024*768分辨率,要求处理成320*240 / 240*200两种分辨率形式。

    难点:

    对方要求中的240*200分辨率大小与我们已有照片分辨率不是同一个比例的。

    解决方案:

    如果直接resize(240,200)后,结果必要会存在变形的情况,那么需要考虑对目标进行裁剪。方法是先按较大的边进行等比例压缩,压缩后再根据目标比例选取中间区域进行裁剪。

    # -*- coding:utf-8 -*-

    """批量调整照片大小

    """

    __author__ = fatway

    __email__ = fatway#gmail.com

    VERSION = "Photo Resizer v1.0 build 2010-8-25"

    import os

    import sys

    import time

    import glob

    import Image

    class PicResizer:

    """根据指定的目录,对该目录下的所有照片进行大小调整

    """

    def __init__(self, picpath, bakpath):

    '''初始化参数'''

    self.picpath = picpath

    self.bakpath = bakpath

    logfile = bakpath + "/log" + time.strftime("%Y%m%d%H%M") + ".txt"

    self.log = open(logfile, "a")

    def pic_walker(self, path):

    '''获取指定目录下的所有JPG照片,不递归深入查找'''

    target = []

    for files in glob.glob(path + "/*.jpg"):

    filepath,filename = os.path.split(files) # todo: mark

    target.append(filename)

    return target

    def check_folder(self, subFolderName):

    '''检查目标文件夹是否存在,不存在则创建之'''

    foldername = self.bakpath + '/' + subFolderName

    print foldername

    if not os.path.isdir(foldername):

    os.mkdir(foldername)

    #return 0

    return foldername

    def pic_info(self, img):

    '''获取照片的尺寸'''

    w, h = img.size

    if w>h:

    return w, h, 0 # 横版照片

    else:

    return w, h, 1 # 竖版照片

    def comp_num(self, x, y):

    '''比较两个实数

    如果是用直接比较话会出现经典的整数除得0问题

    '''

    x = float(x)

    y = float(y)

    return float(x/y)

    def pic_resize(self, picname, p_w, p_h):

    '''根据设定的尺寸,对指定照片进行像素调整'''

    # 获取指定照片的规格,一般是1024,768

    img = Image.open(picname)

    w, h, isVertical = self.pic_info(img)

    # 判断照片横竖,为竖版的话对调w,h

    if isVertical:

    p_w, p_h = p_h, p_w

    # 如果照片调整比例合适,直接输出

    if self.comp_num(p_h, p_w) == self.comp_num(h, w):

    target = img.resize(

    (int(p_w), int(p_h)),

    Image.ANTIALIAS # hack: 参数呐!高保真必备!

    )

    # ANTIALIAS: a high-quality downsampling filter

    # BILINEAR: linear interpolation in a 2x2 environment

    # BICUBIC: cubic spline interpolation in a 4x4 environment

    return target

    # 比例不合适就需要对照片进行计算,保证输出照片的正中位置

    # 算法灵感来源于ColorStrom

    if self.comp_num(p_h, p_w) > self.comp_num(h, w):

    # 240/320 > 360/576 偏高照片的处理

    # 以高为基准先调整照片大小

    p_w_n = p_h * self.comp_num(w,h) # 根据新高按比例设置新宽

    temp_img = img.resize(

    (int(p_w_n), int(p_h)),

    Image.ANTIALIAS

    )

    # 获取中间选定大小区域

    c = (p_w_n - p_w)/2 # 边条大小

    box = (c, 0, c+p_w, p_h) # 选定容器

    box = tuple(map(int, box)) # 转换成crop需要的int形参数

    target = temp_img.crop(box)

    return target

    else:

    # 偏宽的照片

    # 以宽为基准先调整照片大小

    p_h_n = p_w * self.comp_num(h, w) # 根据新宽按比例设置新高

    temp_img = img.resize(

    (int(p_w), int(p_h_n)),

    Image.ANTIALIAS

    )

    # 获取新图像

    c = (p_h_n - p_h)/2

    box = (0, c, p_w, c+p_h)

    box = tuple(map(int, box))

    target = temp_img.crop(box)

    return target

    def run_auto(self, *args):

    '''运行调整照片尺寸进程

    接纳规格列表,每个规格为一个tuple

    '''

    # 获取所有图片列表

    imglist = self.pic_walker(self.picpath)

    # 处理照片

    for img in imglist:

    imgfile = self.picpath + "/" + img # 完整照片名称

    try:

    for std in args:

    w, h = std[0], std[1] # 获取目标照片规格

    # 定义目标文件

    opfile = self.check_folder(str(w)+"x"+str(h)) + "/" + img

    tempimg = self.pic_resize(imgfile, int(w), int(h))

    tempimg.save(opfile, 'jpeg')

    #self.log.write(str(img) + "\tOK\n")

    except:

    self.log.write(str(img) + "\tErr\n")

    print '-->' + img

    print "Done."

    def main():

    '''主函数'''

    # picpath = bakpath = raw_input("type your photo's path:")

    # 修改源照片文件夹路径

    picpath = "E:/BB_Exchange"

    # 修改为你的目标路径

    bakpath = "E:/BB_Exchange"

    # 实例一个进程并运行

    resizer = PicResizer(picpath, bakpath)

    resizer.run_auto((320, 240),(240,200))

    if __name__ == "__main__":

    sys.exit(main())

    展开全文
  • 方法1: from PIL import Image from PIL import ImageFile ImageFile.LOAD_TRUNCATED_IMAGES = True Image.MAX_IMAGE_PIXELS = None ... :param filein: 输入图片 :param fileout: 输出图片 :param width: 输

    方法1:

    # 降低图片分辨率
    def ResizeImage(filein, fileout,width,height, scale=1):
        """
        改变图片大小
        :param filein: 输入图片的文件夹路径
        :param fileout: 输出图片的文件夹路径
        :param width: 输出图片宽度
        :param height: 输出图片宽度
        :param type: 输出图片类型(png, gif, jpeg...)
        :return:
        """
        allImage = os.listdir(filein)
        for image in allImage:
            img = Image.open(filein+"/"+image)
            type = img.format
            out = img.resize((int(width), int(height)), Image.ANTIALIAS)
            # 第二个参数:
            # Image.NEAREST :低质量
            # Image.BILINEAR:双线性
            # Image.BICUBIC :三次样条插值
            # Image.ANTIALIAS:高质量
            out.save(fileout+"/"+image, type)

    方法2:

    def change_size(input_path: str, output_dir: str, width: int, height: int):
        allImage = os.listdir(input_path)
        for image in allImage:
            try:
                image_path = input_path+"/"+image
                ext = os.path.basename(image_path).strip().split('.')[-1]
                if ext not in ['png', 'jpg']:
                    raise Exception('format error')
                _result_path = os.path.join(output_dir, '{}.{}'.format(image[:-4], ext))
                ff = FFmpeg(executable='D:/czc/ffmpeg-4.2-win-64/ffmpeg.exe',inputs={'{}'.format(image_path): None}, outputs={_result_path: '-vf scale={}:{}'.format(width, height)})
                print(ff.cmd)
                ff.run()
                return _result_path
            except:
                print(image+"已转换")
    
    
    
    if __name__ == '__main__':
        png_path = D:/czc/png
        smallPng_path = D:/czc/smallPng
        width = 1280
        height = 720
        change_size(png_path,smallPng_path,width,height)

     方法2在遇到过大的图片可能无法转换

    展开全文
  • 我首先要说的是,你的“只装箱”方式...如果您希望平滑调整大小的行为(例如,通过使用样条插值),您将看到Python图像库和所有在幕后使用它的函数,例如OpenCV,它也提供了summarized in this post的大小调整行为。在

    我首先要说的是,你的“只装箱”方式似乎很不寻常,我想这正是@ljetibo在评论中所指的。在“优化”讨论之后,我将回到这个话题。在

    首先,您可以通过去掉对np.copy的多余调用来稍微改进代码,因为您只需将重新绑定到传入的img的视图。ravel操作将返回一个副本,除非图像形状是binning因子bin_fac的倍数。在

    现在,虽然列表理解速度很快,但是您正在从一个可能不连续的列表中重新创建一个numpy数组,这意味着您要再次将内存从一个位置复制到另一个位置。这些都是消耗效率的操作。在

    您可能感兴趣的是在原始图像上生成一个内存高效的视图。这就是as_strided的作用:from numpy.lib.stride_tricks import as_strided

    def strided_rescale(g, bin_fac):

    strided = as_strided(g,

    shape=(g.shape[0]//bin_fac, g.shape[1]//bin_fac, bin_fac, bin_fac),

    strides=((g.strides[0]*bin_fac, g.strides[1]*bin_fac)+g.strides))

    return strided.mean(axis=-1).mean(axis=-1) # order is NOT important! See notes..

    时序考虑表明,这通常比原始方法快一点,随着装箱因子的增加,性能得到改善:

    ^{2}$

    我相信在数组相等性方面观察到的细微差异是由于复制操作,即从numpy数据类型返回到普通Python浮点,反之亦然。但我不能百分之百肯定。在

    现在优化讨论已经结束,让我们回到您的binning方法。在当前的实现中,您已经将图像分割成正方形、不重叠的区域。在这个故事的其余部分,这些子矩阵不必是正方形的,它们可以是矩形的(如果图像的纵横比可以改变的话),并且结论仍然有效。所以,在每个子矩阵中,取行平均值,然后取结果列向量的平均值。很容易从数学上证明,这和取整个子矩阵的平均值是一样的。这是个好消息,因为这意味着在上面显示的strided_rescale函数中,您可以简单地将return语句替换为:return gstr.mean(axis=(-2,-1))

    这将给你另一个(小)提速。在

    我认为使用^{}是一个非常好的建议,直到我用一个dtype在ndarrays上尝试过了!= np.uint8公司. 即使如此,必须正确选择mode参数,并且它似乎只取子矩阵的左上角:In [39]: a = np.arange(16, dtype=np.uint8).reshape(4,4)

    In [40]: a

    Out[40]:

    array([[ 0, 1, 2, 3],

    [ 4, 5, 6, 7],

    [ 8, 9, 10, 11],

    [12, 13, 14, 15]], dtype=uint8)

    In [41]: imresize(a, (2,2), mode='P')

    Out[41]:

    array([[ 0, 2],

    [ 8, 10]], dtype=uint8)

    In [42]: imresize(a, (2,2), mode='L')

    Out[42]:

    array([[0, 1],

    [6, 7]], dtype=uint8)

    这可能不是你想要的。所以stride_技巧对实际的binning很有效。如果您希望平滑调整大小的行为(例如,通过使用样条插值),您将看到Python图像库和所有在幕后使用它的函数,例如OpenCV,它也提供了summarized in this post的大小调整行为。在

    展开全文
  • 2.将这组图片降低分辨率为一组图像Image23.通过各种神经网络结构,将Image2超分辨率重建为Image3(Image3和Image1分辨率一样)4.通过PSNR等方法比较Image1和Image3,验证超分辨率重建的效果,根据效果调节神经网络中的...
  • 在一些网上报名的时候,经常会遇到上传1寸图片,但是图片大小往往有限制,于是想用Python来实现让图片符合大小。 关于Pillow与PIL 可参考:https://blog.csdn.net/dcz1994/article/details/71642979 提供一个...
  • python如何更改图像像素

    千次阅读 2021-02-04 17:45:56
    Python中,可以使用PIL图像处理库来更改图像像素。方法是:1、利用PIL的load函数导入图片;2、size方法获取宽和高度;3、利用getpixel方法获取图像的像素值,putpixel方法设置图像的像素值。在做语义分割项目时,...
  • Python之修改图片像素值的方法

    千次阅读 2020-12-03 00:48:42
    在做语义分割项目时,标注的图片不合标准,而且类型是RGBA型,且是A的部分表示的类别,因此需要将该图片转化为RGB图片# -*- coding:utf8 -*-import osfrom PIL import Imageim = Image.open('123.png')#打开图片pix ...
  • [Python]改变图片分辨率大小

    万次阅读 2017-08-01 13:27:09
    第 0005 题:你有一个目录,装了很多照片,把它们的尺寸变成都...2.对于图片大小的处理,当大小超过iphone5的分辨率,进行等比例缩放。代码如下:#coding=utf-8 import os #打开文件时需要 from PIL import Image impor
  • python 做视频后期单个视频转图片所有图片转视频视频压缩 - ffmpeg图片降低分辨率图像处理 这是最近无聊的想法,对视频进行处理,其实也就是对图片的处理。 对视频进行后期处理,思路就是,视频转图片,然后对图片...
  • Python 批量修改图片分辨率

    千次阅读 2021-02-15 16:55:48
    # 图片路径 # 使用 glob模块 获得文件夹内所有jpg图像 img_path = glob("./*.jpg") #存储(输出)路径 path_save = "./result" for i,file in enumerate(img_path): name = os.path.join(path_save, "%d.jpg"%i)...
  • 示例:opencv批量降低图片分辨率

    千次阅读 2020-06-30 09:20:21
    要将100多张1920*1280分辨率的图片分辨率调整到1280*720分辨率 首先需要安装opencv ···shell pip install opencv ··· 然后修改图片分辨率 import cv2 import os curDir = os.curdir # 获取当前执行python文件...
  • super pix图像清晰化(超级分辨率)采用python语言编写程序实现
  • opencv-python,对图像进行缩放、降低灰度分辨率,观察图像变化一、在开始之前知识点、方法二、开始对一张图像进行缩放,观察其分辨率和图像变化使用cv2.resize缩放图像观察其分辨率和图像变化降低灰度分辨率,观察...
  • 通过深度学习的图像超分辨率Image Super-Resolution
  • 降低DDS图像的分辨率

    2021-02-04 17:46:06
    我最近花170美元买了一个中国的Windows平板电脑,它有一个intelatom x5z8300cpu,这是去年推出的低端intelatom。...在我的解决方案是降低Roblox获取的纹理的分辨率。我更喜欢用Python来做这件事,因为我可以很快...
  • python批量修改图片分辨率dpi值

    千次阅读 2021-08-31 16:23:48
    很多论文和期刊,对文中插入图片的格式、色彩、图片大小、分辨率(dpi值)都有要求,针对图片分辨率,一般不得低于300dpi。为了满足要求,作者使用python语言完成图片dpi值批量修改,简洁实用。 提示:以下是本篇...
  • python批量修改图片分辨率完整程序

    万次阅读 2019-05-14 18:02:37
    /usr/bin/env python3 # _*_ coding: utf-8 _*_ # File : autofenbianlv.py # Author: DaShenHan&道长-----先苦后甜,任凭晚风拂柳颜------ # Date : 2019/5/14 from glob import glob from PIL import Image ...
  • 对每一张图片生成一个“指纹”,通过比较两张图片的指纹,来判断他们的相似度,是否属于同一张图片。 主要通过比较汉明距离来比较图片,值越小,越相似 1:均值哈希算法(Average hash algorithm) 基于比较灰度...
  • 本实验将使用时深度学习技术对图像进行超分辨率重建,设计到的技术包括了卷积神经网络,生成对抗网络,残差网络等。 二、开发环境 本实验使用到“Microsoft Visual Studio”、“VS Tools for AI”等开发组件,涉及到...
  • 我想把我从我的网络摄像头得到的视频分辨率降低到一半(即从640x480到320x240),但我遇到了错误。在import numpy as npimport cv2cap = cv2.VideoCapture(0)cap.set(3,320)cap.set(4,240)while(True):# Capture frame...
  • 深度学习在做数据集的时候,大多数情况下是不需要很高分辨率图片做原数据集的,下面的程序是应用python和opencv的库来实现图片的降质处理。 import cv2 import os address = r"C:\Users\lenovo\Desktop\paperNeed...
  • 我的意思是图片的单位分辨率,一英寸内的像素点数,是决定了图片的清晰度的属性,在打印机上打印的时候很需要注意。 使用Opencv的resize函数得到的图片都是96dpi,有没有其他办法修改ÿ...
  • 因为模型需要指定分辨率,但包括格式工厂内的软件均不提供指定分辨率,没办法,自己参考编一个python程序 安装完opencv后,要重新启动anaconda # -*- coding: utf-8 -*- """ Spyder 编辑器 这是一个临时脚本文件。 ...
  • 使用python+opencv批量修改视频分辨率

    千次阅读 2019-09-21 10:12:57
    当录取很多视频文件后,发现视频的分辨率不符合要求,于是使用python把320240的视频转换成160120的视频。 思路是:先对视频逐帧改分辨率,再将每一帧的图片合成视频,加上声音。 代码如下: 在这里插入代码片 ...
  • Python和opencv批量改变视频分辨率
  • Python修改保存图片分辨率(dpi)问题

    万次阅读 2018-06-22 13:38:23
    首先导入 pillow ,下载地址:https://pypi.org/project/Pillow/代码:from PIL import Image as ImagePIL, ImageFont, ImageDraw from StringIO import StringIO ...# 保存图片im = ImagePIL.open('/home/uftp/jia...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,287
精华内容 1,714
关键字:

python降低图片分辨率