在《使用numpy处理图片——基础操作》一文中,我们介绍了如何使用numpy修改图片的透明度。本文我们将介绍镜像翻转和旋转。...镜像翻转 上下翻转 from PIL import Image import numpy as np img = Image.open('example.png') data = np.array(img...(verticalData) verticalImg.save('vertical.png') 左右翻转 from PIL import Image import numpy as np img = Image.open...上下镜像翻转 def flip_left_90(arr): return np.flip(arr.transpose((1,0,2)), axis=0) 需要解释下transpose传递元组的意思...这句话的意思是,传递的元组要包含该数组所有的维度的值。转换的方法就是对应项相互转置。比如数组最开始时的维度表示是(0,1,2),如果给transpose传递了(1,0,2)。
一、元组常用操作 1、使用下标索引取出元组中的元素 - [下标索引] 使用下标索引取出 元组 tuple 中的元素 的方式 , 与 列表 List 相同 , 也是将 下标索引 写到中括号中 访问指定位置的元素..., 语法如下 : 元素变量 = 元组变量[下标索引] 如果是嵌套元组 , 则使用两个 中括号 进行访问 ; 元素变量 = 元组变量[下标索引1][下标索引2] 代码示例 : """ 元组 tuple...常用操作 代码示例 """ # 定义元组字面量 t0 = ("Tom", "Jerry", 18, False, 3.1415926) # 打印元组中索引值为 1 的元素 print(t0[1])...: Jerry 16 2、查找某个元素对应的下标索引 - index 函数 调用 tuple#index 函数 , 可以查找 元组 中指定元素 对应的下标索引 ; 函数原型如下 : def index...""" # 定义元组字面量 t0 = ("Tom", "Jerry", 18, False, 3.1415926) # 查找元素对应的下标索引 index = t0.index(18) # 打印查询结果
这里我们使用Numpy库和PIL库来实现这个需求,后者用来图像的读取与保存,涉及到的所有图像处理动作均借助Numpy来实现。 有关NumPy模块、PIL模块的介绍,可参考如下。...这两个模块非Python内置,都属于第三方模块,可直接采用如下方式进行安装 pip install numpy pip install Pillow 注意,要想使用PIL模块,是需要直接install... :param End_coordinate: 处理的终止坐标(像素)点,元组形式 :return: 通过中间值的RGB,对所选范围块的RGB...image im2 = Image.fromarray(im1.astype(np.uint8))# 展示处理后的图像im2.show()if__name__ =='__main__':...# 设置好要处理的像素范围,并以多大的像素块来生成最终效果图to_pixelBlock(10, (0,0), (1280,800) 5 后记 本文使用了PIL加上Numpy的配合,短短几行代码实现了图像像素化的处理
---- 用numpy和PIL库进行图像变换。 灰度化 一张图片无非就是个二维数组,其中的每个元素又是一个三元组[R,G,B],改变RGB的值也就改变了图片的色调。...from PIL import Image import numpy as np a = np.array(Image.open('test.jpg').convert('L')) #二维数组里存储的将不再是...a.shape,a.dtype) #获取图片的二维数组大小和格式 #不同的变化 #b = 255 - a #b = (100/255)*a+150 b = 255*(a/255)**2 im = Image.fromarray...from PIL import Image import numpy as np a = np.asarray(Image.open('test.jpg').convert('L')).astype(...uni_x + dy*uni_y + dz*uni_z) #梯度与光源相互作用,将梯度转换为灰度 b = b.clip(0,255) #防止数据越界,将生成的灰度值裁剪至0-255 im = Image.fromarray
在《使用numpy处理图片——图片切割》一文中,我们介绍了如何使用numpy将一张图片切割成4部分。本文我们将反其道而行之,将4张图片拼接成1张图片。...使用的是hstack方法,给它传递的是需要拼接的数组所组成的元组。这样我们就拼接出上下两部。...import numpy as np from PIL import Image correlateImg = Image.open('correlate.png') correlateData =...给它传递的是上下两部数组组成的元组。...full = np.vstack((top, bottom)) fullImg = Image.fromarray(full) fullImg.save('full.png') 我们以《使用numpy
返回值是一个列表形式,列表中每一行是一张人脸的位置信息,包括[top, right, bottom, left],也可以认为每个人脸就是一组元组信息。主要用于标识图像中所有的人脸信息。...= Image.fromarray(face_image) # pil_image.show() start = (left, top) end = (right, bottom...= Image.fromarray(image) d = ImageDraw.Draw(pil_image) # 生成一张PIL图像 for face_landmarks in face_landmarks_list...如果后续访问时,需要注意加上索引或遍历来进行访问。每张人脸的编码信息是一个 128 维向量。 面部编码信息是进行人像对比的重要参数。...的图像保存格式,在转换时需要做格式上的转换 img_PIL = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)) draw
= face_recognition.face_locations(image)# 使用CNN模型# face_locations = face_recognition.face_locations(...= Image.fromarray(face_image) pil_image.show() ?...pil_image = Image.fromarray(image) d = ImageDraw.Draw(pil_image) for facial_feature in facial_features...#但是由于我知道每个图像只有一个脸,我只关心每个图像中的第一个编码,所以我取索引0。...= Image.fromarray(image) d = ImageDraw.Draw(pil_image, 'RGBA') #让眉毛变成了一场噩梦 d.polygon(face_landmarks
今天使用 NumPy 和 PIL 处理一幅图像,先介绍 3 种最基本的玩法,目的是希望通过此文建立图像处理的基本概念,算是一个图像处理的基本入门。...1 PIL 导入图像 首先使用 PIL 导入我们待处理的图像。...打印 im 对象类型: type(im) im 类型为: PIL.JpegImagePlugin.JpegImageFile 我们使用 NumPy 将其转化为 array: img = np.array...我们使用 NumPy 尝试分离 3 个颜色通道。...以上介绍主要包括: 使用 PIL 导入图像,NumPy 转为数组 NumPy 分离颜色通道 NumPy 裁剪图像
读取中文路径的图片 首先是中文路径的读取 一般我们使用 cv2.imread 进行图片的读取,但是一遇到中文,就会出现错误,如下: import cv2 image = cv2.imread("F:\莫山山...cv2.imwrite 保存图片,但是遇见中文路径时,就会出现编码错误或者保存失败(我在不同的电脑上进行过测试,如果保存成功了,得到的文件名会是乱码)。...单独运行 cv2.imencode('.jpg', image) 得到的是一个元组(2 部分,第二部分才是 array),所以上面程序中有一个取 [1] 的操作 ?...但是一到绘制中文文字时,小朋友你是否会有很多问号????? ? OpenCV 内置的函数不能帮助我们解决这个问题,我们需要借助另外一个库 PIL(pillow) 不过实现起来会稍微有点麻烦。...= Image.fromarray(image[..., ::-1]) # 转成 PIL 格式 draw = ImageDraw.Draw(img_PIL) # 创建绘制对象 draw.text(
: utf-8 -*- """ Created on Thu Mar 21 03:45:16 2019 @author: czh """ %clear %reset -f # In[*] from PIL...比如当depth=1时: 反之,深度值越大,重构后的图像梯度值越大,即图像灰度值变化越大,画面线条越多,整体更显肮脏。...比如当depth=100时 image.png 因此我们需要通过改变depth,找到最符合人类视觉远近程度的深度值。...经过多次测试发现,当深度值为10左右时,即图像灰度梯度变为原来的10%左右时,画面最接近手绘化效果。(当然,对于不同的图片,这个最佳深度值不一定相同)。...如图,我们先假设一个光源位于图像斜上方,设俯视角为el,方位角为az,则单位光线在x,y,z方向上的投影长度分别为:通过多次调整发现,当俯视角el=π/2.2, 方位角az=π/4时光照效果最好。
下文提供封装好的(代码)方法,供OpenCV添加中文使用。 效果预览 ? 实现思路 使用PIL的图片绘制添加中文,可以指定字体文件,那么也就是说使用PIL可以实现中文的输出。...OpenCV图片格式转换成PIL的图片格式; 使用PIL绘制文字; PIL图片格式转换成OpenCV的图片格式; 代码分解 OpenCV图片转换为PIL图片格式 img = Image.fromarray...(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) 使用PIL绘制文字 draw = ImageDraw.Draw(img) fontText = ImageFont.truetype...PIL图片格式转换成OpenCV的图片格式 cv2.cvtColor(numpy.asarray(img), cv2.COLOR_RGB2BGR) 完整代码 封装好的完整方法 #coding=utf-8...=(0, 255, 0), textSize=20): if (isinstance(img, numpy.ndarray)): #判断是否OpenCV图片类型 img = Image.fromarray
传入该参数时,应该传入由浮点数构成的元组,元组长度为4或12。matrix只支持从少数模式转换成'L'或'RGB'。 dither, 高频振动,用于控制颜色抖动。...从模式'RGB'转换为'P'或从'RGB'或'L'转换为'1'时使用。可用的方法有'NONE'或'FLOYDSTEINBERG'(默认)。当提供了matrix参数时不使用此功能。...从模式'RGB'转换为'P'时使用,可用的方法有'WEB'(默认)或'ADAPTIVE'。'ADAPTIVE'表示使用自适应的调色板。 colors, 自适应调色板使用的颜色数。...如果想在图片上粘贴一些内容,又想保留原图时,可以使用此方法。...传入长度为4的元组(x0, y0, x1, y1),这个区域必须在原图的(0, 0, width, height)范围内,如果超出范围会报错,如果不传值则默认将整张原图进行缩放。
= face_recognition.face_locations(image)# 使用CNN模型# face_locations = face_recognition.face_locations(...= Image.fromarray(face_image) pil_image.show() 用于识别的图片 # 执行python文件$ python find_faces_in_picture.py...pil_image = Image.fromarray(image) d = ImageDraw.Draw(pil_image) for facial_feature in facial_features...#但是由于我知道每个图像只有一个脸,我只关心每个图像中的第一个编码,所以我取索引0。...= Image.fromarray(image) d = ImageDraw.Draw(pil_image, 'RGBA') #让眉毛变成了一场噩梦 d.polygon(face_landmarks
= face_recognition.face_locations(image) # 使用CNN模型 # face_locations = face_recognition. face_locations...= Image.fromarray(face_image) pil_image.show() ?...pil_image = Image.fromarray(image) d = ImageDraw.Draw(pil_image) for facial_feature in facial_features...#但是由于我知道每个图像只有一个脸,我只关心每个图像中的第一个编码,所以我取索引0。...= Image.fromarray(image) d = ImageDraw.Draw(pil_image, 'RGBA') #让眉毛变成了一场噩梦 d.polygon(face_landmarks
** 下文提供封装好的(代码)方法,供OpenCV添加中文使用。...效果预览 [在这里插入图片描述] 实现思路 使用PIL的图片绘制添加中文,可以指定字体文件,那么也就是说使用PIL可以实现中文的输出。 有思路之后,接下来的工作就简单了。...OpenCV图片格式转换成PIL的图片格式; 使用PIL绘制文字; PIL图片格式转换成OpenCV的图片格式; 代码分解 **OpenCV图片转换为PIL图片格式** img = Image.fromarray...(cv2.cvtColor(img, cv2.COLOR\_BGR2RGB)) **使用PIL绘制文字** draw = ImageDraw.Draw(img) fontText = ImageFont.truetype...0, 255, 0), textSize=20): if (isinstance(img, numpy.ndarray)): #判断是否OpenCV图片类型 img = Image.fromarray
文章目录 一、图像的RGB色彩模式 图像一般使用RGB色彩模式,即每个像素点的颜色由红R绿G蓝B组成 RGB三个颜色通道的变化和叠加得到各种颜色,其中红绿蓝的取值范围都是0-255 RGB形成的颜色包括了人类视力所能感知的所有颜色...二、Python的PIL库 PIL,Python Image Library PIL库是一个具有强大图像处理能力的第三方库 在Anaconda 中是已经安装好的,命令行下安装方法: pip install...pillow # 用到的第三方库 from PIL import Image # Image是PIL库中代表一个图像的类(对象) import numpy as np 三、图像的数组表示 图像是一个由像素组成的二维矩阵...001.jpg')) # 打开一个图片 生成数组对象 print(a.shape, a.dtype) b = [255, 255, 255] - a # 计算RGB三个通道的补值 im = Image.fromarray...001.jpg').convert('L')) # 打开一个图片 生成数组对象 得到灰度值 print(a.shape, a.dtype) c = 255 - a # 对灰度值取反 im = Image.fromarray
读取图像一般是两个库:opencv和PIL 1、使用opencv读取图像 import cv2 image=cv2.imread("/content/drive/My Drive/colab notebooks.../image/cat1.jpg") print(image.shape) (490, 410, 3) 2、使用PIL读取图像 import PIL image=PIL.Image.open("/content...opencv读取图像之后是BGR格式的,使用PIL读取图像之后是RGB格式的。...= Image.fromarray(cv2.cvtColor(img,cv2.COLOR_BGR2RGB)) image.show() cv2.waitKey() (2)PIL格式转换为opencv格式...需要注意两个问题: 输入要转换为:[1,channel,H,W] 对输入的图像进行数据增强时要求是PIL.Image格式的 import torchvision import sys import torch
一、图像的 RGB 色彩模式 图像一般使用 RGB 色彩模式,即每个像素点的颜色由红R绿G蓝B三个通道组成 RGB三个颜色通道的变化和叠加得到各种颜色,其中红绿蓝的取值范围都是0-255 RGB形成的颜色包括了人类视力所能感知的所有颜色...二、Python的 PIL 库 Python Imaging Library ( PIL ) 给 Python 增加了图像处理能力。...图像存储:PIL设计用于图像归档和图像批量处理,你可以使用它建立缩略图,转换格式,打印图片等等。现在的版本可以验证和读取大量的图片格式。而写入有意设计为只能写入常用的文件格式。...图像显示:现在的版本包含了 Tk PhotoImage 和 BitmapImage 接口,以及 Windows DIB interface,这有助于在 Windows 下使用。...图像处理:这个库包含了基本的图像处理功能,包括点操作,使用内置卷积内核过滤,色彩空间转换。这个库还支持更改图像大小、旋转、自由变换。
下文提供封装好的(代码)方法,供OpenCV添加中文使用。...实现思路 使用PIL的图片绘制添加中文,可以指定字体文件,那么也就是说使用PIL可以实现中文的输出。 有思路之后,接下来的工作就简单了。...OpenCV图片格式转换成PIL的图片格式; 使用PIL绘制文字; PIL图片格式转换成OpenCV的图片格式; 代码分解 OpenCV图片转换为PIL图片格式 img = Image.fromarray...(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) 使用PIL绘制文字 draw = ImageDraw.Draw(img) fontText = ImageFont.truetype...=(0, 255, 0), textSize=20): if (isinstance(img, numpy.ndarray)): #判断是否OpenCV图片类型 img = Image.fromarray
安装 PIL并不是包名,要使用该包需要首先安装pillow包。 pip install pillow 有博文指出PIL和pillow不是同一个事物,且PIL和pillow不能共存,暂没有查证。...目前通过安装pillow包使用PIL没有发现问题。...从矩阵生成图片 注意矩阵的下述属性: 维度 要么是两维的(黑白),要么是三维的(彩色)且第三维为3 数据类型 必须为uint8型,建议使用numpy 彩色(三通道) from PIL import Image...import numpy as np Image.fromarray(np.zeros([3,3,3],np.uint8)) # output: PIL.Image.Image image mode...=RGB size=3x3 at 0x26D5ED0FB70> 黑白(单通道) from PIL import Image import numpy as np Image.fromarray(np.zeros