python图像处理基础

pip install pillow

安装PIL库

1.读取图片

from PIL import Image

import numpy as np

#打开图片

img = Image.open("../material/img2.jpg")

#打开图片并转为灰度图

img2 = Image.open("../material/img2.jpg").convert("L")

print(img2) #img和img2是一个PIL对象

print(np.array(img2)) #也可以通过numpy.array()转为数组

#显示图片

img.show()

img2.show()

2.图片缩放,裁剪和旋转

from PIL import Image

img = Image.open("../material/img2.jpg")

#获取图片宽高 (宽,高) 单位像素

w,h = img.size

#图片缩放

img2 = img.resize((int(w/2),int(h/2))) #传入的宽高要是整型的才行,浮点型会报错

img3 = img.resize((int(w*2),int(h*2)))

img2.show()

# img3.show()

img.save("小姐姐图片.jpg") #图片另存为

img2.save("小姐姐图片(缩略图).jpg")

from PIL import Image

img = Image.open("../material/img2.jpg")

#获取图片宽高 (宽,高) 单位像素

w,h = img.size

#图片裁剪

box = (150,350,400,600) #以(150,350)这个点作为左上角,(400,600)作为右上角

img2 = img.crop(box)

# img2.show()

#图片旋转

# img3 = img2.transpose(Image.ROTATE_90) #逆时针转90度

img3 = img2.rotate(90) #逆时针转90度

img3.show()

3.图片另存为

imgObj.save("文件名",quality=75, subsampling=0)

quality是保存图像质量的参数,默认是75,所以另存为的图片宽高没变,但是大小会缩小,大概之后几十K

如果想保证图像质量可以调到90~95之间

subsampling=0 也是保证图像的质量

将图片数据化

from PIL import Image

import numpy as np

import matplotlib.pyplot as plt

img = Image.open("../material/img2.jpg").convert("L")

#将图片转为numpy数组

img_arr = np.array(img)

print(img_arr[:50])

#图片的像素大小为(600.900), 其数组的shape为(900,600),一维有900个元素,二维600个

print(img_arr.shape) # 每一个值都在0~255之间,代表颜色rgb

fig = plt.figure()

ax1 = fig.add_subplot(121)

plt.gray() #不使用颜色,下面描绘的图像会变成黑白轮廓,否则是有颜色的

ax1.contour(img_arr,origin="image") #描绘图像轮廓

plt.axis("equal")

#描绘直方图

ax2 = fig.add_subplot(122)

#将二维数组展开成一维,并绘制成128条柱体的直方图来显示数据的分布情况,这里显示的就是rgb的分布情况

ax2.hist(img_arr.flatten(),128) # 横轴数据是0~255,即img_arr中的数据值,纵轴是该条柱代表的数据出现的频数(次数),因为数据值是0~255,柱体数是128,所以,一条柱体代表2个数据值;如果使用density=1则纵轴显示的是频率;

plt.tight_layout() #设置默认间距,这样子图之间的距离会自动调节,不会出现坐标轴数据太长挡到另一个子图的情况

plt.show()

​​​​​​​

将图片数据化

使用opencv操作图片

安装opencv

pip install opencv-python -i https://pypi.doubanio.com/simple

-i 后面的表示使用国内镜像

1.读取和保存图片:

im = cv2.imread("文件名")

cv2.imwrite("文件名",im)

其中imread()返回的是一个numpy数组

在opencv中,图像不是按传统的RGB通道,而是按BGR顺序(RGB反序)存储的,读取图片时默认是BGR,可以通过cvtColor() 将颜色空间转换为灰度图或者RGB

转换代码如下:

cv2.COLOR_BGR2GRAY

cv2.COLOR_BGR2RGB

cv2.COLOR_GRAY2BGR

import cv2

im = cv2.imread(r"../material/img2.jpg")

print(im)

print(im.shape) #返回的是一个三维数组(900,600,3),其通道数是3

# 转为灰度图片,灰度图片的通道数是1,也就是一个二维数组

im2 = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)

print(im2)

print(im2.shape)

2.使用matplotlib显示opencv的图片

import cv2

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']

im = cv2.imread(r"../material/img2.jpg")

gray_im = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)

rgb_im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB)

plt.subplot(221)

plt.imshow(rgb_im) #作图,imshow() 接受的是一个numpy数组或者其他对象

plt.title("rgb图像(原图)")

plt.subplot(222)

plt.imshow(gray_im)

plt.title("灰度图像")

plt.subplot(223)

plt.imshow(im)

plt.title("bgr图像")

plt.tight_layout()

plt.show() #显示

python读取图片文件名_python图像处理基础之PIL和opencv相关推荐

  1. python读取图片格式_Python读取图片尺寸、图片格式

    Python读取图片尺寸.图片格式 需要用到PIL模块,使用pip安装Pillow.Pillow是从PIL fork过来的Python 图片库. from PIL import Image im = ...

  2. python代码图片头像_python图像处理-个性化头像

    前言 本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑.如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过. 前言 ...

  3. python读取图片分辨率_python获取网页中所有图片并筛选指定分辨率的方法

    压测时,图片太少,想着下载网页中的图片,然后过滤指定分辨率,但网页中指定分辨率的图片太少了(见下) 后使用格式工厂转换图片 import urllib.request # 导入urllib模块 imp ...

  4. python读取图片路径_Python小列子-读取照片位置

    Python exifread Python利用exifread库来解析照片的经纬度,对接百度地图API显示拍摄地点. import exifread import re import json im ...

  5. python读取图片的格式_python读取图片并修改格式与大小的方法

    本文实例为大家分享了python读取图片并修改文件大小的具体代码,供大家参考,具体内容如下 # Author:NDK # -*- coding:utf-8 -*- from PIL import Im ...

  6. python读取多张图片_python读取图片的几种方式及图像宽和高的存储顺序

    python读取图片的几种方式及图像宽和高的存储顺序 1.opencv 2.imageio 3.matplotlib 4.scipy # coding:utf-8 import cv2 import ...

  7. Android Studio调用python读取图片(使用服务器paddlehub处理图片)

    Android Studio调用python读取图片 一.主要任务 二.环境配置 1.创建一个android studio项目 2.配置项目gradle 3.配置app下的gradle 三.demo测 ...

  8. python读取图片、保存图片的方法

    转自:https://jingyan.baidu.com/article/1876c852572d2f890b137609.html 分步阅读 本文介绍一下,python读取图片.保存图片的方法. 工 ...

  9. [Python开发] 使用python读取图片的EXIF

    使用python读取图片的EXIF 方法 使用PIL.Image读取图片的EXIF. 使用https://pypi.python.org/pypi/ExifRead 读取图片的EXIF,得到EXIF标 ...

最新文章

  1. spring手动代码控制事务
  2. jesd204b应用指南中文_Novation 发布 Summit 合成器中文用户指南
  3. 【频谱共享】基于认知无线电的VCG拍卖机制频谱共享算法的MATLAB仿真
  4. pythonargmaxaxis1_keras.argmax中axis = -1的含义是什么?
  5. Cachegrind:缓存和分支预测分析器
  6. matlab遗传算法实例crtrp,遗传算法求解实例
  7. STM32F405 HAL库 STM32CUBE开发
  8. gcc mips64编译后无法运行在octeon上运行_V 语言运行hello world程序
  9. 2019/3/14 软工作业
  10. Internet Explorer 无法打开搜索页
  11. PN结的形成及PN结工作原理(单向导电)讲解
  12. 苹果手机html5定位,苹果手机常去地点可以记录多长时间?
  13. 在计算机中用于实现域名和IP地址转换的是,internet中用于实现域名和ip地址转换的是什么...
  14. R语言绘制带误差和可信区间的折线图
  15. js+Canvas 利用js 实现浏览器保存图片到本地
  16. java文字水印换行_Java实现图片水印文字换行、平铺、旋转效果-Go语言中文社区...
  17. Kinect结合Unity3D引擎开发体感游戏(二)
  18. 虚拟内存,页表,快表,多级页表,倒排页表
  19. 希赛免费试看教学视频
  20. 微软WebMatrix介绍

热门文章

  1. Android版谷歌地球更新 移动平台首次引入街景
  2. PU-Learning 原理介绍
  3. 高端ARM微处理器芯片性能比较(图片版)
  4. 计算机公共基础视频教程,计算机公共基础经典教程.ppt
  5. 推荐P2P平台却集中爆雷 小米还值得年轻人信任吗?
  6. 考研计算机专业简历怎么写,考研简历怎么写比较好
  7. 合众达DM642程序注释
  8. Profinet协议分布式现场总线IO安装教程2
  9. ZED2相机标定--双目、IMU、联合标定
  10. 浅谈消防设备电源监控系统在某卷烟厂中的应用