Python处理图像

CV2

一, 读入图片

使用函数cv.imread(filepath, flags)读入一张图片

  • filepath为读入图像的完整路径
  • flags为读入图像的标志

          cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道

          cv2.IMREAD_GRAYSCALE:读入灰度图片

          cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道


二, 显示图像

使用函数cv2.imshow(wname, img)显示图像,第一个参数是显示图像的窗口的名字,第二个参数是要显示的图像(imread读入的图像),窗口大小自动调节为图像大小

         

  • cv2.waitKey顾名思义等待键盘输入,单位为毫秒,即等待指定的毫秒数看是否有键盘输入,若在等待时间内按下任意键则返回按键的ASCII码,程序继续运行。若没有按下任何键,超时后返回-1。参数为0表示无限等待。不调用waitKey的话,窗口会一闪而逝,看不到显示的图片。
  • cv2.destroyAllWindow()销毁所有窗口
  • cv2.destroyWindow(wname)销毁指定窗口

三, 保存图像

使用函数cv2.imwrite(file, img, num)保存一个图像。第一个参数是要保存的文件名, 第二个参数是要保存的图像。可选第三个参数,它针对特定的格式: 对JPEG,其表示的是图像的质量,用0-100的整数表示,默认为95;对于png,第三个参数表示的是压缩级别, 默认为3。

  • cv2.IMWRITE_JPEG_QUALITY类型为 long ,必须转换成 int
  • cv2.IMWRITE_PNG_COMPRESSION, 从0到9 压缩级别越高图像越小。

四, 在图像中画矩形

用函数cv2.rectangle(img, (100, 100), (225, 300), (0, 0, 255), 1)在图像中画矩形。我们画了一个起点为(100, 100),终点为(225, 300)的红色(0, 0, 225)矩形,最后一个参数为边框粗细的像素点



          

Matplotlib

matplotlib是基于numpy的一套Python工具包。这个包提供了丰富的数据绘图工具,主要用于绘制一些统计图形,也可以用来处理图像。

一, 显示图像

也可用读取图像。
下面是另一个显示图像的代码。matplotlib为一个绘图工具包,可以先绘出画布,再在画布上读取图片:


二, 保存图像
当使用如下代码保存使用 plt.savefig( ) 保存生成的图片时,保存的图片却是一片空白。

产生这个现象的原因很简单:在 plt.show( ) 后调用了 plt.savefig( ),在plt.show( )后实际上已经创建了一个新的空白的图片(坐标轴),这时候你再 plt.savefig( ) 就会保存这个新生成的空白图片。
故在plt.show( )之前调用plt.savefig( )

保存后的图像如下:

可以看出,plt.savefig( )保存的为整个画图,而不是原始图像。

三, 在图像中画矩形
        matplotlib有一些表示常见图形的对象。这些对象被称为块(patch)。其中有些可以在matplotlib.pyplot中找到(如Rectangle和Circle),但完整集合位于matplotlib.patches。 要在图表中添加一个图形,你需要创建一个块对象shp,然后通过ax.add_patch(shp)将其添加到subplot中。


rec = plt.Rectangle((100, 100),100, 150, fill = False, color='red')中,(100, 100)为矩形中最小点的坐标,第二个参数和第三个参数分别为矩形的宽和长。

PIL
        PIL (Python Imaging Library)是 Python 中最常用的图像处理库,Image 类是 PIL 库中一个非常重要的类,通过这个类可以直接载入图像文件,读取处理过的图像和通过抓取的方法得到的图像。
一, 读取、显示、保存图像


二、在图像中画矩形
  • ImageDraw模块提供了图像对象的简单2D绘制。用户可以使用这个模块创建新的图像,注释或润饰已存在图像,为web应用实时产生各种图形。
  • drawObeject.rectangle([x1,y1,x2,y2],options),在给定区域drawObeject画一个矩形, (x1, y1)表示矩形左上角坐标,(x2, y2)表示矩形右下角坐标, options选项中fill选项将多边形区域用指定颜色填满,outline选项只用指定颜色描出区域轮廓。

保存的结果:


总结:
可以看出,cv2、PIL为图像处理库,matplotlib为绘图库,故图像处理时可以用前两个库。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值