一图看懂Python生态圈图像格式转换

  

在Python生态圈里,最常用的图像库是公益诉讼,尽管已经被后来的枕头取代,但因为枕头的API几乎完全继承了公益诉讼,所以大家还是约定俗成地称其为公益诉讼。除公益诉讼之外,越来越多的程序员习惯使用openCV来处理图像。另外,在GUI库中,也有各自定义的图像处理机制,比如wxPyton,定义了wx.Image做为图像处理类,定义了wx.Bitmap做为图像显示类。

  

下图梳理出了公益诉讼读写图像文件,cv2读写图像文件,公益诉讼对象和cv2对象互转,公益诉讼对象和天气。形象对象互转,以及numpy数组转存图像的方法。掌握了这些方法,足可应对各种各样的图像处理需求了。
一图看懂Python生态圈图像格式转换

  
      <李>公益诉讼读写图像文件   
  

下面的代码,演示了用公益诉讼读取png格式的图像文件,剔除α通道后转存为jpg格式的图像文件。

  ,
 <代码>祝辞的在比;从公益诉讼导入图像
  在在在我=Image.open (r会:\ CSDN \ Python_Programming.png”)
  在在在r, g, b, a=im.split ()
  在在在我=Image.merge (“RGB (r, g, b))
  在在在im.save (r想:\ CSDN \ Python_Programming.jpg”)  
     <李> cv2读写图像文件      

下面的代码,演示了用cv2读取png格式的图像文件,转存为jpg格式的图像文件。

  ,
 <代码>祝辞的在比;进口cv2
  在在在我=cv2.imread (r会:\ CSDN \ Python_Programming.png”)
  在在在cv2.imwrite (r想:\ CSDN \ Python_Programming.jpg’, im)
  真正的 
     <李>公益诉讼对象和cv2对象互转李      

cv2格式的对象,本质上就是numpy数组,也就是numpy.ndarray对象。只要能做到公益诉讼对象和numpy数组互转,自然就实现了公益诉讼对象和cv2对象互转。

  

下面的代码,演示了用公益诉讼读取png格式的图像文件,转成numpy数组后保存为图像文件。

  ,
 <代码>祝辞的在比;进口cv2
  在在在从公益诉讼导入图像
  在在在进口numpy np
  在在在im_pil=Image.open (r想:\ CSDN \ Python_Programming.png”)
  在在在im_cv2=np.array (im_pil)
  在在在cv2.imwrite (r想:\ CSDN \ Python_Programming.jpg ', im_cv2)
  真正的 
  

下面的代码,用cv2读取png格式的图像文件,转成公益诉讼对象后保存为图像文件。

  ,
 <代码>祝辞的在比;进口cv2
  在在在从公益诉讼导入图像
  在在在im_cv2=cv2.imread (r想:\ CSDN \ Python_Programming.png”)
  在在在im_pil=Image.fromarray (im_cv2)
  在在在im_pil.save (r想:\ CSDN \ Python_Programming.jpg”)  
     <李>公益诉讼对象和wx.Image对象互转李      

这是实现公益诉讼对象和wx.Image对象互转的两个函数。

  
 <代码> def PilImg2WxImg (pilImg):
  “公益诉讼的图像转化为wxImage”
  形象=wx.EmptyImage (pilImg.size [0], pilImg.size [1])
  image.SetData (pilImg.convert (RGB) .tostring ())
  image.SetAlphaData (pilImg.convert (RGBA) .tostring () (3:: 4))
  返回图像
  
  def WxImg2PilImg (wxImg):
  “‘wxImage转化为公益诉讼的形象”
  pilImage=形象。新(RGB, (wxImg.GetWidth (), wxImg.GetHeight ()))
  pilImage.fromstring (wxImg.GetData ())
  
  如果wxImg.HasAlpha ():
  pilImage。转换(“RGBA”)
  wxAlphaStr=wxImg.GetAlphaData ()
  pilAlphaImage=Image.fromstring (“L”(wxImg.GetWidth (), wxImg.GetHeight ()), wxAlphaStr)
  pilImage。putalpha (pilAlphaImage)
  
  返回pilImage  
     <李> numpy数组转存图像李      

下面的代码,生成了一515张x512像素的随机图像。

  ,
 <代码>祝辞的在比;从公益诉讼导入图像
  在在在进口numpy np
  在在在=np.random.randint (0256, ((512512 3)), dtype=np.uint8)
  在在在im_pil=Image.fromarray (a)
  在在在im_pil.save (r想:\ CSDN \ random.jpg”)  
  

一图看懂Python生态圈图像格式转换

一图看懂Python生态圈图像格式转换