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 uint8
cv2.imshow("test_imread",img)# 转为RGB显示
cv2.waitKey()

PIL方式:

# -*-coding: UTF-8 -*-
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
image_path="D:/PycharmProjects/imageCut/cutted_images/0.jpg"

#PIL
#相关:scipy.misc.imread, scipy.ndimage.imread
#misc.imread 提供可选参数mode,但本质上是调用PIL,具体的模式可以去看srccode或者document
#https://github.com/scipy/scipy/blob/v0.17.1/scipy/misc/pilutil.py
img=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 Image
import numpy as np
import matplotlib.pyplot as plt
import 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 Image
import numpy as np
import matplotlib.pyplot as plt
from 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, imsave
import 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_img
img_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,所以注意越界问题。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • 解决Python下imread,imwrite不支持中文的问题

    由以下函数代替该功能: def cv_imread(file_path): cv_img=cv2.imdecode(np.fromfile(file_path,dtype=np.uint8),-1) return cv_img def cv_imwrite(filename,src): cv2.imencode('.jpg',src)[1].tofile(filename) 以上这篇解决Python下imread,imwrite不支持中文的问题就是小编分享给大家的全部内容了,希望能给大家一个参考

  • 解决python测试opencv时imread导致的错误问题

    如下所示: import cv2 import numpy as np img = cv2.imread("1.jpg")//图片和代码在同个目录,改为相对路径,解决由imread引起的打不开图片或找不到图片的路径问题 cv2.imshow("1",img) cv2.waitKey(10000) D:\>my.py OpenCV Error: Assertion failed (size.width>0 && size.height>

  • 解决python cv2.imread 读取中文路径的图片返回为None的问题

    使用cv2读取图片时,输出图片形状大小时出现报错" 'NoneType' object has no attribute shape",后来排查发现读取图片的返回值image为None, 这就说明图片根本就没有被读取. 下面图片是问题问题解决后,为了更好的展示,写的代码展示,这是正常的因果关系,找错误排查时是从下往上推. 使用PIL读取图像,能够成功读取图片,借此了解图片的大小和格式,代码如下图所示: cv.imread函数能够成功读取非中文路径的图片,所以就想到是不是中文路径的问题,

  • Python imread、newaxis用法详解

    这篇文章主要介绍了python imread.newaxis用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一:imread 用来读取图片,返回一个numpy.ndarray类型的多维数组,具有两个参数: 参数1 filename, 读取的图片文件名,可以使用相对路径或者绝对路径,但必须带完整的文件扩展名(图片格式后缀) 参数2 flags, 一个读取标记,用于选择读取图片的方式,默认值为IMREAD_COLOR,flag值的设定与用什

  • 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 uint8 cv2.imshow("test_imread",img)

  • 详解python中的index函数用法

    1.函数的创建 def fun(): #定义 print('hellow') #函数的执行代码 retrun 1 #返回值 fun() #执行函数 2.函数的参数 普通参数 :要按照顺序输入参数 def fun(a,b,c): print(a) print(b) print(c) return a fun(11,22,33) #输出:11 #输出:22 #输出:33 指定参数:输入参数时可以不按照顺序输入 def fun(a,b,c): print(a) print(b) print(c) re

  • python中去空格函数的用法

    本文简单介绍了Python中去空格函数的用法,这是一个很实用的函数,希望对大家的Python程序设计有所帮助.具体分析如下: 在Python中字符串处理函数里有三个去空格的函数: strip 同时去掉左右两边的空格 lstrip 去掉左边的空格 rstrip 去掉右边的空格 具体示例如下: >>>a=" gho stwwl " >>>a.lstrip() 'gho stwwl ' >>>a.rstrip() ' gho stwwl'

  • python中的 zip函数详解及用法举例

    python中zip()函数用法举例 定义:zip([iterable, ...]) zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表).若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同.利用*号操作符,可以将list unzip(解压),看下面的例子就明白了: 示例1 x = [1, 2, 3] y = [4, 5, 6] z = [7, 8, 9] x

  • python 的numpy库中的mean()函数用法介绍

    1. mean() 函数定义: numpy.mean(a, axis=None, dtype=None, out=None, keepdims=<class numpy._globals._NoValue at 0x40b6a26c>)[source] Compute the arithmetic mean along the specified axis. Returns the average of the array elements. The average is taken over

  • python中time tzset()函数实例用法

    在时间的设置方面,为了能够跟系统时间有更好的区分,我们有时会借用一些函数方法来实现.就拿tzset()来说是设置时间的一种方法,其内在的变量依靠TZ的控制,如果没有设置TZ则以系统时间为准.接下来我们简单就time tzset().TZ进行说明,并对函数的语法.参数.返回值.实例带来使用介绍. 1.说明 tzset()主要用于设置时间变量,它通过获取TZ环境变量初始化tzname变量,在类System-V系统中,它同时设置timezone(相对UTC以西的秒数,向西为正,向东为负)和daylig

  • Python中使用Lambda函数的5种用法

    引言 Lambda 函数(也称为匿名函数)是函数式编程中的核心概念之一. 支持多编程范例的 Python 也提供了一种简单的方法来定义 lambda 函数. 用 Python 编写 lambda 函数的模板是: lambda arguments : expression 它包括三个部分: · Lambda 关键字 · 函数将接收的参数 · 结果为函数返回值的表达式 由于它的简单性,lambda 函数可以使我们的 Python 代码在某些使用场景中更加优雅.这篇文章将演示在 Python 中 la

  • python中re.findall函数实例用法

    1.findall函数返回字符串中所有匹配结果的正则表达式列表. 2.如果没有分组的正则是返回的正则匹配,分组返回的是分组匹配而非整个正则匹配. 实例 找到所有与pattern匹配的子串(不重叠),并将其放入列表. import re lst = re.findall("[1-9]\d*","qw21313h1o58p4kjh8123jkh8435u") for x in lst: print(x,end=" ") #输出结果:21313 1 5

  • Python中的枚举函数enumerate()的具体用法

    相比于range,list等简易单词,enumerate仅凭外形都不太让人愿意用.事实上,enumerate还是很好用的. enumerate()是python的内置函数.适用于python2.x和python3.x enumerate在字典上是枚举.列举的意思 enumerate参数为可遍历/可迭代的对象(如列表.字符串) enumerate多用于在for循环中得到计数,利用它可以同时获得索引和值,即需要index和value值的时候可以使用enumerate enumerate()返回的是一

  • python pandas中的agg函数用法

    目录 pandas中的agg函数 pandas详解 聚合运算agg() 1. 创建DataFrame对象 2. 单列聚合 3. 多列聚合 4. 多种聚合运算 5. 多种聚合运算并更改列名 6. 不同的列运用不同的聚合函数 7. 使用自定义的聚合函数 8. 方便的descibe pandas中的agg函数 python中的agg函数通常用于调用groupby()函数之后,对数据做一些聚合操作,包括sum,min,max以及其他一些聚合函数 如下所示: >>> df = pd.read_ex

随机推荐