传统cv-图像读取与保存

  • cv2.IMREAD_COLOR 彩色图像
  • cv2.IMREAD_GRAYSCALE 灰度图像
  • cv2.COLOR_BGR2RGB BGR转RGB

图像读取方法:6种

  1.opencv

只能读取英文路径下的图片

#img = cv.imdecode(np.fromfile("动漫人物_0.jpg",np.uint8))#含有中文路径的图片打开
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
import  cv2
img_cv=cv2.imread(r"1.jpg")
print("imgh_cv:",img_cv.shape)

# 第一种cv画的就是原图,不用转换
# 创建窗口,显示图像,窗口名称为src_image
cv2.imshow("src_image",img_cv)
# 等待任意按键按下,保持图片始终显示
cv2.waitKey(0)
# 关闭所有的窗口
cv2.destroyAllWindows()

# 显示可以使用cv也可以plt,plt要先转换成rgb才能画出原图
img = cv2.cvtColor(img_cv, cv2.COLOR_BGR2RGB)
plt.imshow(img)
plt.show()

2.Image

#图像读取方式2
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
import cv2
from PIL import Image
import numpy as np
img_PIL=Image.open(r"1.jpg")
print("img_PIL",img_PIL)
print("img_PIL:",type(img_PIL))
img_PIL=np.array(img_PIL)
print("img_PIL:",img_PIL.shape)
print("img_PIL:",type(img_PIL))
plt.imshow(img_PIL)
plt.show()

3.skimage.io #pytorch的框架

io.show(img)也可以展示

#图像读取方式3
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
# from keras.preproecssing.image  import  array_to_img , img_to_array
# load_imgimg_keras = load_img(r"1.jpg")

import skimage.io as io  #pytorch的框架
img_io=io.imread(r"1.jpg")
print("img_io:",img_io.shape)
plt.imshow(img_io)
plt.show()

4.matplotlib.image

#图像读取方式4
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
import  matplotlib.image as mpig
img_mpig=mpig.imread(r"1.jpg")
print("img_mpig:",img_mpig.shape)
plt.imshow(img_mpig)
plt.show()

5.matplotlib.pyplot

#图像读取方式5
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
img_plt = plt.imread(r"1.jpg")
print("img_plt:",img_plt.shape)
plt.imshow(img_plt,cmap=plt.cm.binary)
plt.show()

plt.imshow(img_plt[:,:,0], cmap=plt.cm.binary)
plt.show()

6.自己造数据

# 图像读取方式6
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
digit = [[[130,26,33,12],
         [14,27,43,140],
         [120,124,134,205]],

         [[15,26, 33, 12],
         [14, 27, 50, 190],
        [120, 124, 134, 25]],

        [[135,26,33,12],
         [14,27,43,10],
         [20,12,134,205]],
         ]
plt.imshow(digit,cmap=plt.cm.binary)
plt.show()

图片保存:4种

1.PIL.Image

# 保存方式1
from PIL import Image

path = r"1.jpg"     #图片路径
img = Image.open(path)  #打开图片
img.save("2.jpg")      #将图片保存为2.jpg

2.opencv

# 保存方式2
import cv2

path = r"1.jpg"     #图片路径
#img = cv.imdecode(np.fromfile("动漫人物_0.jpg",np.uint8))#含有中文路径的图片打开
img = cv2.imread(path)  #读取图片
cv2.imwrite("2.jpg",img)  #将图片保存为1.jpg

3.plt.savefig

# 保存方式3
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt




""" 一些画图代码 """
plt.savefig("2.png")   # 保存图片 注意 在show()之前  不然show会重新创建新的 图片
plt.show()

4.io.imsave

# 保存方式4
import matplotlib
matplotlib.use('TkAgg')
from skimage import io,data
img=data.chelsea()
io.imshow(img)
io.imsave('2.jpg',img)

你可能感兴趣的:(图像处理,python)