Python图像基本操作有哪些
admin
2023-07-13 14:44:31
0次
libtiff 包装器
from libtiff import TIFF

tif = TIFF.open('filename.tif', mode='r')    #打开tiff文件进行读取
image = tif.read_image()                     #读取图像并作为numpy数组返回

for image in tif.iter_images()               #读取TIFF文件中的所有图像

tif = TIFF.open('filename.tif', mode='w')    #打开tiff文件进行写入
tif.write_image(image)                       #将图像写入tiff文件
Python 模块
from libtiff import TIFFfile, TIFFimage

tif = TIFFfile('filename.tif')              #读取图片
samples, sample_names = tiff.get_samples()
tiff = TIFFimage(data, description='')

tiff.write_file('filename.tif', compression='none') # or 'lzw'
del tiff                                            # 刷新(释放缓存)
opencv 模块
import cv2
cv2.imread("filename",flags)

=====================其中:flags四种选择如下:==================
IMREAD_UNCHANGED = -1 #不进行转化,比如保存为了16位的图片,读取出来仍然为16位。
IMREAD_GRAYSCALE = 0 #转化为灰度图,比如保存为了16位的图片,读取出来为8位,类型为CV_8UC1。
IMREAD_COLOR = 1     #进行转化为RGB三通道图像,图像深度转为8位
IMREAD_ANYDEPTH = 2  #保持图像深度不变,进行转化为灰度图。
IMREAD_ANYCOLOR = 4  #若通道数小于等于3,则保持不变;若通道数大于3则只取取前三个通道。图像深度转为8位

对于多通道TIFF图像,若要保证图像数据的正常读取,显然要选择IMREAD_UNCHANGED
PIL 模块
from PIL import Image
img0 = Image.open("D:/python_script/ffff/11lalala.jpg")
img1 = Image.open("D:/python_script/ffff/42608122.tif")
img2 = Image.open("D:/python_script/ffff/42608122_1.jpg")  #这张图片是直接修改上张图的后缀名

print ("图片格式:{0},图片大小:{1},图片模式:{2}".format(img0.format,img0.size,img0.mode))
print ("图片格式:{0},图片大小:{1},图片模式:{2}".format(img1.format,img1.size,img1.mode))
print ("图片格式:{0},图片大小:{1},图片模式:{2}".format(img2.format,img2.size,img2.mode))

输出:#说明直接修改图片后缀名,图片的编码格式并没有改变
图片格式:JPEG,图片大小:(245, 213),图片模式:RGB
图片格式:TIFF,图片大小:(2480, 3508),图片模式:YCbCr
图片格式:TIFF,图片大小:(2480, 3508),图片模式:YCbCr
直接修改图片格式
import PIL.Image
import os

def convert(input_dir,output_dir):
    for filename in os.listdir(input_dir):
        path = input_dir+"/"+filename
        print("doing... ",path)
        PIL.Image.open(path).save(output_dir+"/"+filename[:-4]+".jpg")
        print ("%s has been changed!"%filename)

if __name__ == '__main__':
   input_dir = "D:/classifier_data20181225/img1" 
   output_dir = "D:/classifier_data20181225/img2"
   convert(input_dir,output_dir)
大(分辨率大)图片缩小

遇到分辨率大,图片文件大小并不大的文件,opencv打不开,此时用到了以下代码用来缩小图片。

  • 若文件宽大于1200,(高度小于1800)以此宽度等比缩放

  • 若文件高大于1800,(宽度小于1200)以此高度等比缩放

import os
from PIL import Image
import shutil

def get_img(input_dir):
    img_path_list = []
    for (root_path,dirname,filenames) in os.walk(input_dir):
        for filename in filenames:
            img_path = root_path+"/"+filename
            img_path_list.append(img_path)
    print("img_path_list",img_path_list)
    return  img_path_list

def process_image(filename,output_dir, mwidth=1200, mheight=1800):
    image = Image.open(filename)
    w, h = image.size
    if w <= mwidth and h <= mheight:
        print(filename, 'is OK.')
        shutil.move(filename, output_dir+filename[-15:])
        return
    if (1.0 * w / mwidth) > (1.0 * h / mheight):
        scale = 1.0 * w / mwidth
        new_im = image.resize((int(w / scale), int(h / scale)), Image.ANTIALIAS)

    else:
        scale = 1.0 * h / mheight
        new_im = image.resize((int(w / scale), int(h / scale)), Image.ANTIALIAS)
    new_im.save(output_dir+filename[-15:])
    new_im.close()

if __name__ == '__main__':
    input_dir = "D:/classifier_data20181212/lipei_resize_1"
    output_dir = "D:/classifier_data20181212/lipei_resize/"
    img_path_list = get_img(input_dir)
    for filename in img_path_list:
        print("filename",filename)
        process_image(filename,output_dir)

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...