python+opencv解决方案:保存图像的方法比较之一

匿名 (未验证) 提交于 2019-12-02 22:54:36

学习各种图片读入和保存方法,分析对比其图像的格式
1.cv2打开和保存图片:分彩色和灰度图两种情况




2.PIL打开和保存图片:







3.skimage打开和保存图片:分彩色和灰度图两种情况




4.plt打开和保存图片:



        cv2 open and cvtBGR  (shape,dtype):(200, 280, 3),uint8         ski open             (shape,dtype):(200, 280, 3),uint8         plt open             (shape,dtype):(200, 280, 3),uint8         pil open             (size ,dtype):(280, 200),JPEG         pil open and pil2arr (shape,dtype):(200, 280, 3),uint8         pil open and arr2pil (size ,dtype):(280, 200),None         cv2 open and save    (shape,dtype):(200, 280, 3),uint8         pil open and save    (shape,dtype):(200, 280, 3),uint8         ski open and save    (shape,dtype):(200, 280, 3),uint8         plt open and save    (shape,dtype):(288, 432, 3),uint8         cv2 open gray        (shape,dtype):(200, 280),uint8         pil open gray        (size ,dtype):(280, 200),None         ski open gray        (shape,dtype):(200, 280),float64         cv2 open and savegray(shape,dtype):(200, 280),uint8         pil open and savegray(shape,dtype):(200, 280),uint8         ski open and savegray(shape,dtype):(200, 280),uint8








''' 1.cv2打开图片,显示后,用cv2存储 ''' import cv2 import matplotlib.pyplot as plt #   cv2读入和保存彩色图 img_cv2BGR = cv2.imread('house.jpg') img_cv2RGB = cv2.cvtColor(img_cv2BGR,cv2.COLOR_BGR2RGB) cv2.imwrite('house_cv2write.jpg',img_cv2RGB)            # 图像占内存略大于原图 img_cv2write = plt.imread('house_cv2write.jpg') print(img_cv2BGR.dtype) print(img_cv2BGR.size) print(img_cv2BGR.shape) print(img_cv2BGR) #   cv2读入和保存灰度图 imgray_cv2 = cv2.imread('house.jpg',cv2.IMREAD_GRAYSCALE) cv2.imwrite('housegray_cv2write.jpg',imgray_cv2) imgray_cv2write = plt.imread('housegray_cv2write.jpg') print(imgray_cv2.dtype) print(imgray_cv2.size) print(imgray_cv2.shape) print(imgray_cv2)  '''2.PIL保存''' from PIL import Image import numpy as np #   用PIL读入和保存彩色图,并进行格式转换以用于不同目的 img_pil = Image.open('house.jpg')                       # img类,JPEG格式,mode=RGB img_pil2arr = np.array(img_pil)                         # 转成ndarray img_arr2pil = Image.fromarray(img_pil2arr)              # 矩阵再转为图像 img_arr2pil.save('house_pilsave.jpg')                   # PIL保存图像 img_pilsave = plt.imread('house_pilsave.jpg') print(img_pil.format)                                   # JPEG; 'Image' object has no attribute 'shape' and 'dtype' print(img_pil.size)                                     # (280, 200) print(img_pil)                                          # <PIL.JpegImagePlugin.JpegImageFile image mode=RGB... print(img_arr2pil.format) print(img_arr2pil.size) print(img_arr2pil) #   用PIL读入和保存灰度图 imgray_pil = Image.open('house.jpg').convert('L')       # L为灰度图,RGB为真彩色,RGBA为加了透明频道 imgray_pil.save('house_gray_pilsave.jpg') print(imgray_pil.format)                                # None;format为None,mode为L,注意与彩色图不同  print(imgray_pil.size)                                  # (280, 200) print(imgray_pil)                                       # <PIL.Image.Image image mode=L size=280x200 at... imgray_pilsave = plt.imread('house_gray_pilsave.jpg')  ''' 3.skimage保存:分彩色和灰度图两种情况 ''' from skimage import io #   ski读入彩色图 img_ski = io.imread('house.jpg')  io.imshow(img_ski)                                      # io.imshow显示图像 io.imsave('house_skisave.jpg',img_ski)                  # io.save保存图像 img_skisave = plt.imread('house_skisave.jpg')           # plt读入图像 print(img_ski.dtype) print(img_ski.size) print(img_ski.shape) print(img_ski) #   ski读入灰度图 imgray_ski = io.imread('house.jpg',as_grey=True)  print(imgray_ski.dtype) print(imgray_ski.size) print(imgray_ski.shape) print(imgray_ski) io.imsave('house_gray_ski.jpg',imgray_ski) imgray_skisave = plt.imread('house_gray_ski.jpg')  ''' 4.plt.save:将当前窗口内的内容保存,包括白边 ''' import matplotlib.pyplot as plt fig = plt.figure('house') img_plt = plt.imread('house.jpg') plt.imshow(img_plt) plt.savefig('house_pltsave.jpg')                        # 一定在plt.show()之前 plt.show() img_pltsave = plt.imread('house_pltsave.jpg')   ''' 打印图片格式 ''' #   分类显示:方法结果对比 print("cv2 open and cvtBGR  (shape,dtype):{},{}".format(img_cv2RGB.shape,img_cv2RGB.dtype)) print("cv2 open and save    (shape,dtype):{},{}".format(img_cv2write.shape,img_cv2write.dtype)) print("cv2 open gray        (shape,dtype):{},{}".format(imgray_cv2.shape,imgray_cv2.dtype)) print("cv2 open and savegray(shape,dtype):{},{}".format(imgray_cv2write.shape,imgray_cv2write.dtype)) print("pil open gray        (size ,dtype):{},{}".format(imgray_pil.size,imgray_pil.format)) print("pil open and savegray(shape,dtype):{},{}".format(imgray_pilsave.shape,imgray_pilsave.dtype)) print("pil open             (size ,dtype):{},{}".format(img_pil.size,img_pil.format)) print("pil open and pil2arr (shape,dtype):{},{}".format(img_pil2arr.shape,img_pil2arr.dtype)) print("pil open and arr2pil (size ,dtype):{},{}".format(img_arr2pil.size,img_arr2pil.format)) print("pil open and save    (shape,dtype):{},{}".format(img_pilsave.shape,img_pilsave.dtype)) print("ski open             (shape,dtype):{},{}".format(img_ski.shape,img_ski.dtype)) print("ski open and save    (shape,dtype):{},{}".format(img_skisave.shape,img_skisave.dtype)) print("ski open gray        (shape,dtype):{},{}".format(imgray_ski.shape,imgray_ski.dtype)) print("ski open and savegray(shape,dtype):{},{}".format(imgray_skisave.shape,imgray_skisave.dtype)) print("plt open             (shape,dtype):{},{}".format(img_plt.shape,img_plt.dtype)) print("plt open and save    (shape,dtype):{},{}".format(img_pltsave.shape,img_pltsave.dtype)) #   分类显示:相同操作结果对比 print("cv2 open and cvtBGR  (shape,dtype):{},{}".format(img_cv2RGB.shape,img_cv2RGB.dtype)) print("ski open             (shape,dtype):{},{}".format(img_ski.shape,img_ski.dtype)) print("plt open             (shape,dtype):{},{}".format(img_plt.shape,img_plt.dtype)) print("pil open             (size ,dtype):{},{}".format(img_pil.size,img_pil.format)) print("pil open and pil2arr (shape,dtype):{},{}".format(img_pil2arr.shape,img_pil2arr.dtype)) print("pil open and arr2pil (size ,dtype):{},{}".format(img_arr2pil.size,img_arr2pil.format)) print("cv2 open and save    (shape,dtype):{},{}".format(img_cv2write.shape,img_cv2write.dtype)) print("pil open and save    (shape,dtype):{},{}".format(img_pilsave.shape,img_pilsave.dtype)) print("ski open and save    (shape,dtype):{},{}".format(img_skisave.shape,img_skisave.dtype)) print("plt open and save    (shape,dtype):{},{}".format(img_pltsave.shape,img_pltsave.dtype)) print("cv2 open gray        (shape,dtype):{},{}".format(imgray_cv2.shape,imgray_cv2.dtype)) print("pil open gray        (size ,dtype):{},{}".format(imgray_pil.size,imgray_pil.format)) print("ski open gray        (shape,dtype):{},{}".format(imgray_ski.shape,imgray_ski.dtype)) print("cv2 open and savegray(shape,dtype):{},{}".format(imgray_cv2write.shape,imgray_cv2write.dtype)) print("pil open and savegray(shape,dtype):{},{}".format(imgray_pilsave.shape,imgray_pilsave.dtype)) print("ski open and savegray(shape,dtype):{},{}".format(imgray_skisave.shape,imgray_skisave.dtype))   ''' 显示图像 ''' fig = plt.figure(figsize=(20,10)) plt.axis('off') ax = fig.add_subplot(241) ax.imshow(img_cv2RGB)                                   # 用cv2打开原始彩色图像进行显示     ax.set_title('Source image') ax = fig.add_subplot(243) ax.imshow(img_cv2write)                                 # 打开cv2保存的彩色图像进行显示     ax.set_title('cv2write image')             ax = fig.add_subplot(247) ax.imshow(imgray_cv2write)                              # 打开cv2保存的灰度图像进行显示  ax.set_title('cv2write gray image') ax = fig.add_subplot(244) ax.imshow(img_skisave)                                  # 打开ski保存的彩色图像进行显示 ax.set_title('skisave image')  ax = fig.add_subplot(248) ax.imshow(imgray_skisave)                               # 打开ski保存的灰度图像进行显示  ax.set_title('skisave gray image') ax = fig.add_subplot(242) ax.imshow(img_pilsave)                                  # 打开pil保存的彩色图像进行显示  ax.set_title('pilsave image') ax = fig.add_subplot(246) ax.imshow(imgray_pilsave)                               # 打开pil保存的灰度图像进行显示  ax.set_title('pilsave gray image') ax = fig.add_subplot(245) ax.imshow(img_pltsave)                                  # 打开plt保存的彩色图像进行显示  ax.set_title('pltsave image') plt.savefig('house_save_img_method_compare.jpg')

Pythonhttp://www.cnblogs.com/skyfsm/p/8276501.html
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!