在Python生态圈里,最常用的图像库是公益诉讼,尽管已经被后来的枕头取代,但因为枕头的API几乎完全继承了公益诉讼,所以大家还是约定俗成地称其为公益诉讼。除公益诉讼之外,越来越多的程序员习惯使用openCV来处理图像。另外,在GUI库中,也有各自定义的图像处理机制,比如wxPyton,定义了wx.Image做为图像处理类,定义了wx.Bitmap做为图像显示类。
下图梳理出了公益诉讼读写图像文件,cv2读写图像文件,公益诉讼对象和cv2对象互转,公益诉讼对象和天气。形象对象互转,以及numpy数组转存图像的方法。掌握了这些方法,足可应对各种各样的图像处理需求了。
-
<李>公益诉讼读写图像文件李>
下面的代码,演示了用公益诉讼读取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”) 代码>