目录
一、图像处理的常用开发方法
- C、Visual C++:速度快,效率高,开发难度较大
- C#:提供图像类,入门容易,效率较低;
- Java:更适合网络开发;
- Python:第三方莫亏啊丰富,开发效率低;
- Delphi、VB:速度慢,开发效率低;
传统VC++图像处理的方法
- 图像数据读取后放到哪里?
- DIB设备无关位图文件;
- 由于MFC没有封装处理与DIB位图相关的Windows API函数的类,所以奔着面向对象的思想,有必要设计一个CDib类;
传统VC++的处理方法——设计CDIB类
传统VC++的处理方法——开发流程
Python开发工具
文本工具类
IDLE,Notepad++ ,Sublime Text
集成工具类
PyCharm,Wing,PyDev&Eclipse,Visual Studio,Anaconda&Spyder(PIL),Canopy
Python有关图像处理的库
- PIL/Pillow:提供基础的数字图像处理,读出来的文件是PIL的类型;
- Numpy:图像本质上是包含数据点像素的标准Numpy数组;
- Scipy:像Numpy一样,可用于基本的图像处理和处理任务;
- Matplotlib:提供图像和图形数据的可视化输出;
- skimage:基于Scipy的图像处理包;
- OpenCV-Python:OpenCV的Python APi;
- SimpleCV;
- Mahotas;
二、PIL、Pillow图像处理库
PIL图像处理库的用途
- 图像归档(创建缩略图,转换图像格式,打印图像)
- 图像展示,支持多的GUI框架接口
- 图像处理(点处理,卷积核)
PIL/Pillow库的核心类
- image类:核心类,加载图像,Imageopen(filename,mode):发开一张图像,返回一个Image对象;
size属性:表示宽高;
format属性:表示图像文件的格式,包括JPEG,PNG等;
mode属性:表示图像的色彩模式’ - Image.show():显示图像
- Image.new(mode,(width,height),color):新建图像;
保存图像
- Image.save(filename,format):保存指定格式的图像;
创建缩略图
- Image.thumbnail(size,resample):创建缩略图;
- 第一个参数是指定的缩略图大小;
几何变换
- Image.transpose(method):返回反转或者旋转后的图像;
- Image.resize(size,resamole,box):返回改变为size的图像;
裁剪、合并、粘贴、拷贝
- Image.crop(box):返回矩形区域裁剪后的图像。
点处理与滤波器
- Image.point(lut,mode):对图像像素进行点操作;
- Image.filter(filter):对图像进行滤波操作;
颜色模式变换
- Image.convert():颜色模式变换。
像素操作
- Image.getpixel(xy):返回给指定位置的像素指。左上角为(0,0)
如果图象为多通道,则返回一个元组;(8位灰度图像返回单值)
该方法执行较慢;如果需要较打部分数据,可用load()或者getdata(); - Image.putpixel(xy,color):改变单个像素点颜色;
图像增强子类——ImageEnhance
- ImageEnhance:图像增强,增加亮度;
三、我们的基本思路
- 直接调用有关高级图像处理库及函数完成——忽略细节;
- 像素级操作(自己写代码进行处理)——初学者推荐;
像素级操作
- 用Image.getpixel()和Image.putpixel()两个函数对图像进行像素级处理;
- 取像素颜色值——处理——存放像素颜色值;
- 处理过程可能需要遍历所有或部分像素,而核心的算法在中间的“处理”部分;
四、应用实例
- 实验1 图像文件的读取与显示
- 实验目的:通过编写和调试一个读取图像文件中图像数据的程序,加深对图像数据在计算机中存储格式的理解,并为后续打基础;
熟悉Python开发环境,掌握Pillow库的基本使用方法; - 实验内容:用Python编写一个读取并显示图像文件的程序;
实验要等下节课再讲了,上边的图片都是直播的时候截的,全损画质嘿嘿。