服务器之家

服务器之家 > 正文

Python中的imread()函数用法说明

时间:2021-09-23 00:36     来源/作者:xky1306102chenhong

cv2方式:

?
1
2
3
4
5
6
7
8
9
# -*- 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方式:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# -*-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:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
# -*-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方式:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# -*-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方式:

?
1
2
3
4
5
6
7
8
9
10
11
# -*-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库都不允许中文路径

但是可以这样修改,就可以得到可以识别中文路径的读取:

?
1
2
3
4
5
6
7
8
9
#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,所以注意越界问题。

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

原文链接:https://blog.csdn.net/xky1306102chenhong/article/details/81569863

标签:

相关文章

热门资讯

yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
2021年耽改剧名单 2021要播出的59部耽改剧列表
2021年耽改剧名单 2021要播出的59部耽改剧列表 2021-03-05
返回顶部