python读取图片文件名_python图像处理基础之PIL和opencv
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相关推荐
- python读取图片格式_Python读取图片尺寸、图片格式
Python读取图片尺寸.图片格式 需要用到PIL模块,使用pip安装Pillow.Pillow是从PIL fork过来的Python 图片库. from PIL import Image im = ...
- python代码图片头像_python图像处理-个性化头像
前言 本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑.如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过. 前言 ...
- python读取图片分辨率_python获取网页中所有图片并筛选指定分辨率的方法
压测时,图片太少,想着下载网页中的图片,然后过滤指定分辨率,但网页中指定分辨率的图片太少了(见下) 后使用格式工厂转换图片 import urllib.request # 导入urllib模块 imp ...
- python读取图片路径_Python小列子-读取照片位置
Python exifread Python利用exifread库来解析照片的经纬度,对接百度地图API显示拍摄地点. import exifread import re import json im ...
- python读取图片的格式_python读取图片并修改格式与大小的方法
本文实例为大家分享了python读取图片并修改文件大小的具体代码,供大家参考,具体内容如下 # Author:NDK # -*- coding:utf-8 -*- from PIL import Im ...
- python读取多张图片_python读取图片的几种方式及图像宽和高的存储顺序
python读取图片的几种方式及图像宽和高的存储顺序 1.opencv 2.imageio 3.matplotlib 4.scipy # coding:utf-8 import cv2 import ...
- Android Studio调用python读取图片(使用服务器paddlehub处理图片)
Android Studio调用python读取图片 一.主要任务 二.环境配置 1.创建一个android studio项目 2.配置项目gradle 3.配置app下的gradle 三.demo测 ...
- python读取图片、保存图片的方法
转自:https://jingyan.baidu.com/article/1876c852572d2f890b137609.html 分步阅读 本文介绍一下,python读取图片.保存图片的方法. 工 ...
- [Python开发] 使用python读取图片的EXIF
使用python读取图片的EXIF 方法 使用PIL.Image读取图片的EXIF. 使用https://pypi.python.org/pypi/ExifRead 读取图片的EXIF,得到EXIF标 ...
最新文章
- spring手动代码控制事务
- jesd204b应用指南中文_Novation 发布 Summit 合成器中文用户指南
- 【频谱共享】基于认知无线电的VCG拍卖机制频谱共享算法的MATLAB仿真
- pythonargmaxaxis1_keras.argmax中axis = -1的含义是什么?
- Cachegrind:缓存和分支预测分析器
- matlab遗传算法实例crtrp,遗传算法求解实例
- STM32F405 HAL库 STM32CUBE开发
- gcc mips64编译后无法运行在octeon上运行_V 语言运行hello world程序
- 2019/3/14 软工作业
- Internet Explorer 无法打开搜索页
- PN结的形成及PN结工作原理(单向导电)讲解
- 苹果手机html5定位,苹果手机常去地点可以记录多长时间?
- 在计算机中用于实现域名和IP地址转换的是,internet中用于实现域名和ip地址转换的是什么...
- R语言绘制带误差和可信区间的折线图
- js+Canvas 利用js 实现浏览器保存图片到本地
- java文字水印换行_Java实现图片水印文字换行、平铺、旋转效果-Go语言中文社区...
- Kinect结合Unity3D引擎开发体感游戏(二)
- 虚拟内存,页表,快表,多级页表,倒排页表
- 希赛免费试看教学视频
- 微软WebMatrix介绍