前言 之前在进行深度学习训练的时候,偶然发现使用PIL读取图片训练的效果要比使用python-opencv读取出来训练的效果稍好一些,也就是训练更容易收敛。...可能的原因是两者读取出来的数据转化为pytorch中Tensor变量稍有不同,这里进行测试。...之后的代码都导入了: from PIL import Image import matplotlib.pyplot as plt import numpy as np import torch import...cv2 测试 使用PIL和cv2读取图片时会有细微的区别,通过下面的代码可以发现两者读取图片是有区别的,也就是使用PIL读取出来的图片转为numpy格式和直接使用cv读取的图片在像素点上并不是完全一致...').convert('RGB') In[19]: image_pil = np.array(image_pil) In[20]: image_cv = cv2.cvtColor(image, cv2.
import osfrom PIL import Imagedirname_read="D:\dataset\cityscapes\cityscape_voc_clean\JPEGImages_png\
近期我也在看一些别人写的代码,因为个人习惯不一样,他们在做深度学习时用于图片读取的图像库各不相同,从opencv到PIL再到skimage等等各种库都有,有些库读进来的图片存储方式也不太一样,如果不好好总结这些主流图像读写库特点的话...这篇文章就总结了以下主流Python图像库的一些基本使用方法和需要注意的地方: opencv PIL(pillow) matplotlib.image scipy.misc skimage opencv...上面提到了两种获取灰度图的方式,读进来的灰度图的矩阵格式是(高度,宽度)。...图片矩阵变换 opencv读入图片的矩阵格式是:(height,width,channels)。...图像读写 PIL读进来的图像是一个对象,而不是我们所熟知的numpy 矩阵。
一.图像灰度化原理 二.基于OpenCV的图像灰度化处理 三.基于像素操作的图像灰度化处理 四.总结 文章参考自己以前系列图像处理文章及OpenCV库函数。...图像处理] 十三.基于灰度三维图的图像顶帽运算和黑帽运算 [Python图像处理] 十四.基于OpenCV和像素处理的图像灰度化处理 学Python近八年,认识了很多大佬和朋友,感恩。...- https://blog.csdn.net/eastmount ---- 一.图像灰度化原理 像灰度化是将一幅彩色图像转换为灰度化图像的过程。...---- 二.基于OpenCV的灰度化处理 在日常生活中,我们看到的大多数彩色图像都是RGB类型,但是在图像处理过程中,常常需要用到灰度图像、二值图像、HSV、HSI等颜色,OpenCV提供了cvtColor...前面讲述了调用OpenCV中cvtColor()函数实现图像灰度化的处理,接下来讲解基于像素操作的图像灰度化处理方法,主要是最大值灰度处理、平均灰度处理和加权平均灰度处理方法。
在这里对一些常用的OpenCV,PIL,skimage进行了一些总结,以及pytorchvision.transorforms的一些简单使用。...(img_path) # 灰度图 img_pil_gray = Image.open(alpha_path).convert('L') # 打开图片并转成灰度图 print(img_pil.size...numpy数组,是uint8类型,0-255范围,图像形状是(H,W,C),读入的顺序是BGR,这点需要注意 PIL是有自己的数据结构的,类型是;但是可以转换成numpy数组,转换后的数组为unit8,...0-255范围,图像形状是(H,W,C),读入的顺序是RGB skimage读取进来的图片是numpy数组,是unit8类型,0-255范围,图像形状是(H,W,C),读入的顺序是RGB matplotlib...读取进来的图片是numpy数组,是unit8类型,0-255范围,图像形状是(H,W,C),读入的顺序是RGB 名称 type 数据类型 读入图像格式 数据形状 能否通过transforms转换 opencv
通过PIL和OpenCV来使用一些常见的图像处理技术,例如将RGB图像转换为灰度图像、旋转图像、对图像进行消噪、检测图像中的边缘以及裁剪图像中的感兴趣区域。...使用OpenCV中的模板匹配搜索图像中的对象。 所需安装的库:PIL、OpenCV、imutils 为什么我们需要学习图像处理技术? 深度学习对于图像的分析、识别以及语义理解具有重要意义。...此处提供代码和图像 导入所需的库 import cv2 from PIL import Image 首先我们使用OpenCV和PIL显示图像 使用OpenCV读取和显示图像 image = cv2.imread...与彩色图像相比,灰度图像每个像素的信息更少,因此灰度图像的处理时间将更快。 使用OpenCV对彩色图像进行灰度缩放 以下是使用cvtColor()将彩色图像转换为灰度图像的方法及转换结果。...使用PIL对彩色图像进行灰度缩放 convert()提供了此图像转换的另一种方式, “ L”模式用于转换为灰度图像,“ RGB”模式用于转换为彩色图像。
opencV存储的格式:BGR PIL读进来的图像是一个对象,而不是我们所熟知的numpy 矩阵 ?...skimage的存储格式RGB skimage有一个巨大的不同是读取灰度图时其图像的矩阵的值被归一化了,注意注意!...我们再看opencv和PIL读取灰度图时会不会被归一化呢?...opencv读取灰度图格式 PIL读取灰度图 from PIL import Image import numpy as np img1 = Image.open('d:/picture/cat.jpg...PIL读取灰度图格式 从上面的对比可以看出skimage读取灰度图时的巨大不同就是其图像的矩阵的值被归一化了!!! 03总结 总的来说OpenCV、Skimage、PIL各有千秋。
图像库的基本使用方法:matplotlib、PIL(pillow)、OpenCV、skimage、imageio。...其发展非常早,拥有众多的计算机视觉、数字图像处理和机器视觉等功能,OpenCV是今天介绍得所有图像库中最全面也最强大的库,学习成本也相对要高很多。...,包括动画图像,视频,体积数据和科学格式。...总结 其他图像库读取彩色图片都以RGB形式储存,而OpenCV则是以BGR形式存储。其他图像库读取图片都以numpy十六进制彩色值形式储存,而PIL读取图片是以对象形式储存。...; 转灰度图:transforms.Grayscale; 依概率p转为灰度图:transforms.RandomGrayscale; 线性变换:transforms.LinearTransformation
【计算机视觉处理4】色彩空间转换 1、图层操作 在第2篇中提到过,如果是二值图片(黑白图)或者灰度图片,一个像素需要一个8位二进制来表示。而对于彩色图像,一个像素则需要用3个8位二进制来表示。...我们认为灰度图只有一个图层,而普通的彩色图像则有三个图层。 对于灰度图来说,像素强调的是白色的程度,当像素值为0时图像表现为黑色,当像素值为255时图像表现为白色。...当然我们不需要自己计算,在OpenCV中提供了色彩空间转换的函数cv2.cvtColor(),函数格式如下: dst = cv2.cvtColor(src, code) 该函数接收两个参数,分别是要转换的图片和转换的模式...其中我们最常用的就是下面几个: # 将BGR转换成GRAY(灰度图) cv2.COLOR_BGR2GRAY # 将BGR转换为RGB cv2.COLOR_BGR2RGB # 将BGR转换为HSV cv2...在代码中我们使用PIL模块读取图片,因为PIL默认是以RGB模式读取,因此当我们直接将它转换为ndarray数组时,OpenCV把R和B通道颠倒了,因此图片颜色异常显示。
可选的第三个参数,它针对特定的格式:对于JPEG,其表示的是图像的质量,用0 – 100的整数表示,默认95。 第三个参数表示的是压缩级别。...和cv2.imread 的区别及其转换 Image.open 打开来的图像格式,cv2.imread 读出来是像素格式。...# 1、PIL.Image转换成OpenCV格式: import cv2 from PIL import Image import numpy path = 'F:/File_Python/Resources...face_images/LZT01.jpg' img = Image.open(path).convert("RGB")#.convert("RGB")可不要,默认打开就是RGB img.show() #转opencv...",img) cv2.waitKey() # 2、OpenCV转换成PIL.Image格式 import cv2 from PIL import Image import numpy img =
专栏地址:『youcans 的 OpenCV 例程300篇 – 总目录』 01. 图像的读取(cv2.imread) 02. 图像的保存(cv2.imwrite) 03....:读取图像的文件路径和文件名 flags:读取图片的方式,可选项 cv2.IMREAD_COLOR(1):始终将图像转换为 3 通道BGR彩色图像,默认方式 cv2.IMREAD_GRAYSCALE(...0):始终将图像转换为单通道灰度图像 cv2.IMREAD_UNCHANGED(-1):按原样返回加载的图像(使用Alpha通道) cv2.IMREAD_ANYDEPTH(2):在输入具有相应深度时返回...16位/ 32位图像,否则将其转换为8位 cv2.IMREAD_ANYCOLOR(4):以任何可能的颜色格式读取图像 返回值 retval:读取的 OpenCV 图像,nparray 多维数组 注意事项...OpenCV 对图像的任何操作,本质上就是对 Numpy 多维数组的运算。 OpenCV 中彩色图像使用 BGR 格式,而 PIL、PyQt、matplotlib 等库使用的是 RGB 格式。
在函数中,首先将图像转换为灰度图像。 对灰度图像进行二值化处理,得到黑白二值图像。 使用轮廓检测函数找到图像中的轮廓。 找到最大的轮廓,表示瓶子的轮廓。 计算轮廓的面积和外接矩形的面积。...如果选择了文件,则使用OpenCV的imread()函数读取图片。 将读取的图片从BGR颜色空间转换为RGB颜色空间。...使用PIL库的Image.fromarray()函数将图像转换为PIL图像对象。 使用PIL库的ImageTk.PhotoImage()函数将PIL图像对象转换为可显示的图像对象。...通过配置img_label部件的image属性,将图像显示在GUI窗口中。 液位检测: 定义一个detect_liquid()函数,用于执行液位检测。 在函数中,首先将图像转换为灰度图像。...然后对灰度图像进行二值化处理,将图像转换为黑白二值图像。 使用OpenCV的findContours()函数找到图像中的轮廓。 找到最大的轮廓,即代表瓶子的轮廓。 计算轮廓的面积和外接矩形的面积。
图像的BGR格式说明 OpenCV中图像读入的数据格式是numpy的ndarray数据格式。是BGR格式,取值范围是[0,255]. 如下图所示,分为三个维度: ?...第一维度:Height 高度,对应图片的 nRow 行数 第二维度:Width 宽度,对应图片的 nCol 列数 第三维度:Value 代表BGR三通道的值 BGR分别代表蓝色,绿色和红色 2.Image...对象的属性 image.shape 返回图像的宽度,长度和通道数,如果是灰度图,返回值仅有行数和列数。 ...image.size 返回图像的像素 image.dtype 返回图像的数据类型 1 import cv2 2 import numpy as np 3 img=cv2.imread('buffer.jpg
☔图片灰度转换 OpenCV 中有数百种关于在不同色彩空间之间转换的方法。当前,在计算机视觉中有三种常用的色彩空间:灰度、BGR、以及 HSV(Hue,Saturation,Value)。...使用 OpenCV 进行人脸检测 静态图像中人脸检测 人脸检测首先是加载图像并检测人脸,这也是最基本的一步。为了使所得到的结果有意义,可在原始图像的人脸周围绘制矩形框。...【示例】识别图片中的人脸 import cv2 as cv def face_detect_demo(): # 将图片转换为灰度图片 gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY...人脸识别模块的另外一个重要特征是:每个识别都具有转置信(confidence)评分,因此可在实际应用中通过对其设置阈值来进行筛选。...imagePaths: # 打开图片 PIL_img = Image.open(imagePath).convert('L') # 将图像转换为数组
Opencv与pillow,base64的转换 3. 维度与通道 4. 颜色空间 5. 图像二值化 6. 图像运算与二值运算 7. 缩放,裁剪与旋转 8....HSV:一种特殊的颜色空间,之前提取印章的时候使用过(这个颜色空间可以方便的分离出红色的像素)。 GRAY:灰度空间。 RGBA:带透明度的颜色空间,通常是png图像。...前面三种的通道数都是3,灰度空间的通道数只有1(只有黑白灰),而RGBA是4个通道(在RGB的基础上增加了一个通道,用来表示透明度)。...将BGR颜色空间直接转换为pillow的图像进行展示,颜色跟原图就会有差别,因为display默认展示出来的是RGB,而输入的却是BGR,相当于有两个通道被调换了(上图中的红色和蓝色调转了)。...正确的做法是,先将BGR转换为RGB,再转成pillow对象,才能正常的展示出来。混合使用opencv和pillow的时候,这点通常是需要特别注意。
) 键盘监听,按s键进行保存: if k == ord('s'): 保存拍摄图像的格式,打印提示文字: cv2.imwrite('E:/tupian/'+str(num)+'.name'+'.jpg'.../haarcascade_frontalface_default.xml') 遍历列表中的图片: for imagePath in imagePaths: 将打开的图片灰度化: PIL_img = Image.open...: #打开图片,灰度化PIL有九种不同的模式:1,L,P,RGB,RGBA,CMYK,YCbCr,I,F PIL_img = Image.open(imagePath)....warningtime = 0 识别视频中人脸模块: def face_detect_demo(img): gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#转换为灰度...warningtime = 0 #准备识别的图片 def face_detect_demo(img): gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#转换为灰度
核心概念与联系在计算机视觉和图像处理中,Python通常与以下几个核心概念和工具有关:OpenCV:OpenCV是一个开源的计算机视觉库,提供了大量的图像处理和计算机视觉算法。...在图像处理中,NumPy用于处理图像数据和数学计算。Pillow:Pillow是一个基于Python的PIL(Python Imaging Library)库,提供了图像读写、处理和转换的功能。...# 读取图像# 将图像数据转换为NumPy数组img_np = np.array(img)# 对图像数据进行处理# 例如,将图像转换为灰度图像gray_img_np = cv2.cvtColor(img_np..., cv2.COLOR_BGR2GRAY)# 将处理后的图像数据转换回OpenCV格式gray_img = cv2.cvtColor(gray_img_np, cv2.COLOR_GRAY2BGR)#...python 代码解读复制代码from PIL import Image# 读取图像# 对图像进行处理# 例如,将图像转换为灰度图像gray_img_pil = img_pil.convert('L')
aHash、pHash、dHash是常用的图像相似度识别算法,原理简单,实现方便,个人把这三个算法作为学习图片相似度识别的入门算法。本次起,从aHash开始,对三个算法的基本原理和实践代码进行梳理。...网上看到的案例基本都将尺寸缩小为8*8,64个像素点,暂时不清楚缩小为这个尺寸的原因,但如果觉得损失的信息太多,个人认为可以将尺寸适当调大,当然像素点多了后续计算就会稍慢一些。 灰度化处理。...将图片全部转换为统一的灰度图。 计算像素均值。计算像素的灰度平均值(此处均值出现)。 哈希值计算。将每个像素的灰度,与平均值进行比较。...2 Python实现 本例中将计算以下两张图片的相似度: (image1) (image2) 图像处理库 图像处理可以用opencv包或者PIL包。...完整算法 from PIL import Image #用PIL处理图像 import os import numpy as np #import cv2 ——如果要用opencv时需导入 #均值哈希算法
2.2.1 Pillow Pillow是Python图像处理函式库(PIL)的一个分支。...cv2.COLOR_BGR2GRAY)# 转换为灰度图 [图片上传失败......cv2.COLOR_BGR2GRAY)# 转换为灰度图# Canny边缘检测edges = cv2.Canny(img, 30, 70)cv2.imwrite('canny.jpg', edges)...OpenCV包含了众多的图像处理的功能,OpenCV包含了你能想得到的只要与图像相关的操作。...此时data的格式为: torch.Size([10, 3, 64, 128]), torch.Size([10, 6]) 前者为图像文件,为batchsize * chanel * height
,比如Resize()和RandomHorizontalFlip()等方法要求输入的图像为PIL Image,而正则化操作Normalize()处理的是tensor格式的图像数据。...因此,针对不同操作的数据格式要求,我们需要在不同操作之前将输入图像数据的格式化成所要求的格式,有了这些概念了解,面对可能出现的bug,我们才能游刃有余的精准处理。...如下图所示,我的bug出现在红框中的句柄中,而与大多数博文不同的是,我是先对图像做灰度处理,然后再做剪裁和旋转的操作,因此transforms.Compose(transforms)组合操作在这行代码之后...肯定是需要tensor的图像操作传入的是PIL,因此在合适的位置前将PIL转换为tensor即可 解决方法从 transform = transforms.Compose([ transforms.Resize...和np.ndarray图片与Tensor之间的转换 [2] PyTorch载入图片后ToTensor解读(含PIL和OpenCV读取图片对比) [3] pytorch如何显示数据图像及标签TypeError