首页 > 编程知识 正文

python 比较函数(python比较不同函数)

时间:2023-05-03 15:43:38 阅读:65133 作者:4957

与Python中各种imread函数的差异联系起来最近一直在Python上做图像处理相关的东西,让各种imread函数很头疼,所以今天我们把这些imread总结起来,以后不再犯愚蠢的错误如果你也正好对此感到困惑,请看这个总结。 当然,要知道具体的细节,还是需要read the fuck code和API document,但是python的很多模块文档似乎并不完整,所以只能看代码和注释。

首先,我们来看看常用的图像导入方法。 pil.image.open scipy.misc.imreadscipy.nd image.imreadcv2. imreadmatplotlib.image.imreadskimgecaffe

你知道有帖子介绍了这些方法的性能Python的各种imread函数在实现方式和读取速度上有什么区别吗? 这些方法可以分为四个大家庭PIL PIL.Image.open numpy

scipy.misc.imread

scipy.ndimage.imread

所有这些方法都是调用PIL.Image.open读取图像的信息

PIL.Image.open不直接返回numpy对象,而是可以使用numpy提供的函数进行转换。 参照Image和Ndarray相互转换;

所有其他模块都直接返回numpy.ndarray对象。 通道顺序为RGB,通道值的默认范围为0-255。

matplotlib matplot.image.imread

如您所见,此模块具有matlab风格,直接numpy.ndarray格式的通道顺序为RGB,通道值的默认范围为0-255。

opencv cv2.imread

使用opencv导入图像并直接返回numpy.ndarray对象。 请注意,频道顺序为BGR,为BGR。 通道值的默认范围为0-255。

skimage skimage.io.imread:直接返回numpy.ndarray对象。 通道顺序为RGB,通道值的默认范围为0-255。

caffe.io.load_image:未调用默认的skimage.io.imread,返回值为0-1的float型数据,频道顺序为RGB

matplotlib的pyplot模块中的show和cv2中的imshow是一些图像说明。 在这些方法中,如果传递的参数为numpy.ndarray (通道值范围0-255 ),则显示正常,没有区别。 这表明了numpy在python中的重要地位。 胡说八道,看代码。

以下是测试代码的执行环境为windows10 python3.6

# encoding=utf8 frompilimportimageimportnumpyasnpimportcv2importmatplotlib.pyplotasplt # 用于显示PLT图像importmatplotlib.imageas MP MP img是与图像importskimageimportsysfromskimageimportio # pil #相关的:scipy.misc.imread 用于读取scipy.nd image.im read # misc.imre eead的特定模式为srccode或document # https://github.com/scipy/scipy/blob/获取可以从中查看pilutil.pyimagepath='testage (的im1=NP.array(im1 ) numpy对象, RGB打印(type ) im1 ) )打印(im1.shape ) )2opencvim2=cv2.imread ) (imagepath ) ), 3 )与3MATPLOTLIBMATLAB相似的方式im3=MPimg.imread(imagepath ) print(type ) im3 ) (NP.array print (im3.shape ) )4Skimgg为0-1浮点型数据im4=io.im read (图像路径)打印(类型) im4 ) ) NP.array打印(im4.shape )打印(im4 ) ) #cv2 cv2.imread的图像是BGR,因此在cv2.imshow的情况下, 相应的通道显示为PLT.subplot(221 ) PLT.title(pilread ) (PLT.imshow ) im1 (PLT.subplot ) 222 (PLT.title ) ) PLT.title ) skimageread ) ) plt.show ) im # # # # # # # # # # # # # # # cmd output # # # # # # # # # # # 3 ) class ' numpy.nd array ' # (851,1279,3 ) class ' numpy.nd array ' # (851,1279,3 )测试结果

总结python中未显示的数据类型声明,但在编程过程中必须自己清楚数据类型是什么。 否则,你可能会犯愚蠢的错误。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。