Python中imread()函数怎么用
小编给大家分享一下Python中imread()函数怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
cv2方式:
# -*- coding: UTF-8 -*-import cv2"""cv2模块--图片的读入和显示""" image_path="D:/PycharmProjects/imageCut/cutted_images/0.jpg" img=cv2.imread(image_path)# np.ndarray BGR uint8cv2.imshow("test_imread",img)# 转为RGB显示cv2.waitKey()
PIL方式:
# -*-coding: UTF-8 -*- from PIL import Imageimport numpy as npimport matplotlib.pyplot as plt image_path="D:/PycharmProjects/imageCut/cutted_images/0.jpg" #PIL#相关:scipy.misc.imread, scipy.ndimage.imread#misc.imread 提供可选参数mode,但本质上是调用PIL,具体的模式可以去看class="lazy" data-srccode或者document#https://github.com/scipy/scipy/blob/v0.17.1/scipy/misc/pilutil.pyimg=Image.open(image_path)img=np.array(img)# 获得numpy对象, np.ndarray, RGB #统一使用plt进行显示,不管是plt还是cv2.imshow,在python中只认numpy.array,但是由于cv2.imread 的图片是BGR,cv2.imshow 时相应的换通道显示 plt.imshow(img)plt.show()
matplotlib.image:
# -*-coding: UTF-8 -*- from PIL import Imageimport numpy as npimport matplotlib.pyplot as pltimport matplotlib.image as mpimg image_path="D:/PycharmProjects/imageCut/cutted_images/0.jpg" img=mpimg.imread(image_path) #统一使用plt进行显示,不管是plt还是cv2.imshow,在python中只认numpy.array,但是由于cv2.imread 的图片是BGR,cv2.imshow 时相应的换通道显示 plt.imshow(img)plt.show()
skimage.io方式:
# -*-coding: UTF-8 -*- from PIL import Imageimport numpy as npimport matplotlib.pyplot as pltfrom skimage import io image_path="D:/PycharmProjects/imageCut/cutted_images/0.jpg" #4 skimge#caffe.io.load_iamge()也是调用的skimage实现的,返回的是0-1 float型数据img = io.imread(image_path) #统一使用plt进行显示,不管是plt还是cv2.imshow,在python中只认numpy.array,但是由于cv2.imread 的图片是BGR,cv2.imshow 时相应的换通道显示 plt.imshow(img)plt.show()
scipy.misc方式:
# -*-coding: UTF-8 -*- from scipy.misc import imread, imshow, imsaveimport matplotlib.pyplot as plt image_path="D:/PycharmProjects/imageCut/cutted_images/0.jpg" img = imread(image_path)# imshow(img) need to set the SCIPY_PIL_IMAGE_VIEWER environment variable to point to the program/executable that can be used to view images on your system plt.imshow(img)plt.show()imsave("D:/PycharmProjects/imageCut/cutted_images/1.jpg",img)
补充:cv2.imread()和matplotlib.image.imread()读取图片的一些区别,python,中文路径
1.cv2.imread()和matplotlib.image.imread()
除了读取出来的rgb的顺序不一样,对于读取图片的类型要求也不一样,
example:
将.jpg改为.png,后者读取就有问题,而前者就顺利的读取出来了
而且cv2.imread()不能有中文路径,否则读取不出来,一般opencv库都不允许中文路径
但是可以这样修改,就可以得到可以识别中文路径的读取:
#cv2识别中文路径def cv2_imread(img_path): cv_img=cv2.imdecode(np.fromfile(img_path, dtype=np.uint8), -1) return cv_imgimg_y = cv2_imread('E:/哈哈/' + str(number) + '.jpg')#这个是存储到带有中文路径的文件里面,其中有图像质量的模糊度cv2.imencode('.jpg', img,[int(cv2.IMWRITE_JPEG_QUALITY), random.uniform(30, 50)])[1].tofile("E:/哈哈/" + str(xuhao) + ".jpg")
对于cv2读取的图像的形式是数组,不同的读取函数,读取到的图像的形式是不一样的,所以可以多次进行不同的读取方式,来进行不同的操作
2.scipy.misc.imread()
读出来的为rgb,而且可以使用中文路径(cv2.imread()读出来的图片是BGR)
scipy.misc.imsave(),直接进行保存就可以。但是有一点要注意,它只能保存uint8类型的数据,所以有时候就需要对他的类型进行声明。还有一些别的函数,有时候也会这样的。uint8的取值范围是0-255,所以注意越界问题。
以上是“Python中imread()函数怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341