2016-01-11 14:30:08 denny2015 阅读数 2981
  • Python+OpenCV3.3图像处理视频教程

    Python+OpenCV3.3图像处理视频培训课程:该教程基于Python3.6+OpenCV新版本3.3.0详细讲述Python OpenCV图像处理部分内容,包括opencv人脸识别、人脸检测、数字验证码识别等内容。是Python开发者学习图像知识与应用开发佳实践课程。

    5437 人正在学习 去看看 贾志刚

一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点:

1、不开源,价格贵

2、软件容量大。一般3G以上,高版本甚至达5G以上。

3、只能做研究,不易转化成软件。

因此,我们这里使用python这个脚本语言来进行数字图像处理。

要使用python,必须先安装python,一般是2.7版本以上,不管是在windows系统,还是linux系统,安装都是非常简单的。

要使用python进行各种开发和科学计算,还需要安装对应的包。这和matlab非常相似,只是matlab里面叫工具箱(toolbox),而python里面叫库或包。基于python脚本语言开发的数字图片处理包,其实很多,比如PIL,Pillow, opencv, scikit-image等。

对比这些包,PIL和Pillow只提供最基础的数字图像处理,功能有限;opencv实际上是一个c++库,只是提供了python接口,更新速度非常慢。到现在python都发展到了3.5版本,而opencv只支持到python 2.7版本;scikit-image是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,正好与matlab一样,因此,我们最终选择scikit-image进行数字图像处理。

一、需要的安装包

因为scikit-image是基于scipy进行运算的,因此安装numpy和scipy是肯定的。要进行图片的显示,还需要安装matplotlib包,综合起来,需要的包有:

Python >= 2.6

Numpy >= 1.6.1

Cython >= 0.21

Six >=1.4

SciPy >=0.9

Matplotlib >= 1.1.0

NetworkX >= 1.8

Pillow >= 1.7.8

dask[array] >= 0.5.0

比较,安装起来非常费事,尤其是scipy,在windows上基本安装不上。

但是不用怕,我们选择一款集成安装环境就行了,在此推荐Anaconda, 它把以上需要的包都集成在了一起,因此我们实际上从头到尾只需要安装Anaconda软件就行了,其它什么都不用装。

二、下载并安装 anaconda

先到https://www.continuum.io/downloads 下载anaconda, 现在的版本有python2.7版本和python3.5版本,下载好对应版本、对应系统的anaconda,它实际上是一个sh脚本文件,大约280M左右。

本系列以windows7+python3.5为例,因此我们下载如下图红框里的版本:


名称为: Anaconda3-2.4.1-Windows-x86_64.exe

是一个可执行的exe文件,下载完成好,直接双击就可以安装了。

在安装的时候,假设我们安装在D盘根目录,如:


并且将两个选项都选上,将安装路径写入环境变量。


然后等待安装完成就可以了。

安装完成后,打开windows的命令提示符:

输入conda list 就可以查询现在安装了哪些库,常用的numpy, scipy名列其中。如果你还有什么包没有安装上,可以运行

conda install ***  来进行安装。(***为需要的包的名称)

如果某个包版本不是最新的,运行 conda update *** 就可以更新了。

三、简单测试

anaconda自带了一款编辑器spyder,我们以后就可以用这款编辑器来编写代码。

spyder.exe放在安装目录下的Scripts里面,如我的是 D:/Anaconda3/Scripts/spyder.exe, 直接双击就能运行。我们可以右键发送到桌面快捷方式,以后运行就比较方便了。

我们简单编写一个程序来测试一下安装是否成功,该程序用来打开一张图片并显示。首先准备一张图片,然后打开spyder,编写如下代码:

from skimage import io
img=io.imread('d:/dog.jpg')
io.imshow(img)

将其中的d:/dog.jpg 改成你的图片位置

然后点击上面工具栏里的绿色三角进行运行,最终显示



如果右下角“ Ipython console" 能显示出图片,说明我们的运行环境安装成功。

我们可以选择右上角的 ” variable explorer" 来查看图片信息,如


我们可以把这个程序保存起来,注意python脚本文件的后缀名为py


2019-03-14 00:19:27 LieberVater 阅读数 424
  • Python+OpenCV3.3图像处理视频教程

    Python+OpenCV3.3图像处理视频培训课程:该教程基于Python3.6+OpenCV新版本3.3.0详细讲述Python OpenCV图像处理部分内容,包括opencv人脸识别、人脸检测、数字验证码识别等内容。是Python开发者学习图像知识与应用开发佳实践课程。

    5437 人正在学习 去看看 贾志刚

一、关于PIL库

PIL是一个图像处理经常使用到的库,全名是Python Image Library,其中有一个子库是Image,我们今天就来用一下这个库

PIL可以做很多和图像处理相关的事情:

  • 图像归档(Image Archives)。PIL非常适合于图像归档以及图像的批处理任务。你可以使用PIL创建缩略图,转换图像格式,打印图像等等。
  • 图像展示(Image Display)。PIL较新的版本支持包括Tk PhotoImage,BitmapImage还有Windows DIB等接口。PIL支持众多的GUI框架接口,可以用于图像展示。
  • 图像处理(Image Processing)。PIL包括了基础的图像处理函数,包括对点的处理,使用众多的卷积核(convolution kernels)做过滤(filter),还有颜色空间的转换。PIL库同样支持图像的大小转换,图像旋转,以及任意的仿射变换。PIL还有一些直方图的方法,允许你展示图像的一些统计特性。这个可以用来实现图像的自动对比度增强,还有全局的统计分析等。

二、PIL库的简单使用

# -*- coding: utf-8 -*-
"""
Created on Tue Mar 12 14:03:00 2019

@author: Administrator
"""

from PIL import Image
from pylab import *



img1 = Image.open('E:\\360MoveData\\Users\\Administrator\\Desktop\\things2_0\\flower.jpg')
subplot(121)
axis('off')
imshow(img1)

img2 = Image.open('E:\\360MoveData\\Users\\Administrator\\Desktop\\things2_0\\flower.jpg').convert('1')
subplot(122)
axis('off')
imshow(img2)

show()

效果:

这里面的Image.open函数就是我们读取图片的函数,看起来和前面博客提到的cv库中的imread函数作用还是很相似的,subplot的作用在于我们将这个读取出来的图片作为最后输出的一个子图的形式,axis()顾名思义是针对显示图片的坐标轴的方法,如果这里不设置成off的话,就会变成这种效果:

可以看到我们在读取第二个子图的时候使用了convert()函数,这个函数的作用是什么呢,是指明了我们对于图像处理的模式,比如我这里指定了模式为“1”,根据我们运行的效果也可以看出来,在这个模式下的图片只有黑白两种颜色,不过这样说显得有点不专业嘿,用老师在课上的话讲,把这种叫做通道,如果我们传统的RGB,是由三种基本颜色组成的,这种就是有三个颜色通道,那么我们这个模式1的图片处理,可以看到非黑即白,即便如此,它的每个像素也是用八位来表示,0表示黑,255表示白,经过convert函数处理之后读取出来的图片,就如同我们刚才看到的右侧子图,变成了黑白的颜色。

另外一种模式是L,在这种模式下会出现什么效果呢?让我们试一下

嘿,明显看到这个图片处理得比刚才的模式细腻多了呀,而且也不只有黑白两种颜色,而是一种灰灰的颜色,与模式1相似,模式L的每个像素用8个bit表示,0表示黑,255表示白,其他数字表示不同的灰度。在PIL中,从模式“RGB”转换为“L”模式是这样转换的:

L = R * 299/1000 + G * 587/1000+ B * 114/1000

https://www.jianshu.com/p/bdd9bfcbedb7这篇博客中看到了有关convert函数几种模式的介绍,如下:

convert()是图像实例对象的一个方法,接受一个 mode 参数,用以指定一种色彩模式
1 ------------------(1位像素,黑白,每字节一个像素存储)
L ------------------(8位像素,黑白)
P ------------------(8位像素,使用调色板映射到任何其他模式)
RGB------------------(3x8位像素,真彩色)
RGBA------------------(4x8位像素,带透明度掩模的真彩色)
CMYK--------------------(4x8位像素,分色)
YCbCr--------------------(3x8位像素,彩色视频格式)
I-----------------------(32位有符号整数像素)
F------------------------(32位浮点像素)

所以接下来依次验证几种模式,左面的都是原图,右面的代表不同的模式效果

模式P:



模式RGBA:

模式CMYK:

模式YCbCr:

模式I:

模式F:

 

针对PIL库中的几个函数的实验大概就是这样,在这个过程中参考了一些大佬的博客,我自己也是刚刚开始这方面的学习,后面会慢慢更新学习过程中的感受和新知识

2015-05-15 21:04:32 harry19902002 阅读数 750
  • Python+OpenCV3.3图像处理视频教程

    Python+OpenCV3.3图像处理视频培训课程:该教程基于Python3.6+OpenCV新版本3.3.0详细讲述Python OpenCV图像处理部分内容,包括opencv人脸识别、人脸检测、数字验证码识别等内容。是Python开发者学习图像知识与应用开发佳实践课程。

    5437 人正在学习 去看看 贾志刚

python 视觉:基本的图像操作和处理(未完)

本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦:


目录:

PIL:Python图像处理类库

网站链接

Matplotlib

网站链接
利用Matplotlib拥有很强大的绘图功能,可以绘制出很多高质量的图标
axis

Numpy

网站链接

Scipy

网站链接
Scipy是建立在Numpy基础上,用于数值运算的开源工具包

2015-12-25 18:40:12 WHEgqing 阅读数 2943
  • Python+OpenCV3.3图像处理视频教程

    Python+OpenCV3.3图像处理视频培训课程:该教程基于Python3.6+OpenCV新版本3.3.0详细讲述Python OpenCV图像处理部分内容,包括opencv人脸识别、人脸检测、数字验证码识别等内容。是Python开发者学习图像知识与应用开发佳实践课程。

    5437 人正在学习 去看看 贾志刚

    对Python的学习要从视频编码说起。其实,我一直在用ffmpeg对视频做设计、处理,后来发现Opencv也能干同样的事情,就想研究一下Opencv是怎么实现的,再后来就和Python扯上关系了,不说那么多了......

    这算是我的一个总结吧,留个自己看的,同时也分享给大家。有不对的地方,还请指正,我一直认为学习就是一个互相探讨的过程。

一、基本模块安装

1 VS2013安装

    这里不提供资源,网上有很多,可以自己下载;安装过程也不做讨论。

2 安装Python

    这里选择Python-2.7.10,win32版本http://download.csdn.net/my/uploads,最新版本有3.x,感兴趣的可以去网上下载。
    安装目录:D:\Program Files\Python27,根据自己情况选择。

3 安装PTVS

    PTVS是ms提供的一个Python插件,我用的是2.2.2-vs2013版本http://download.csdn.net/detail/whegqing/9377217,网上又会有相关资源。
    安装完成后在工具->扩展更新,能看到:

4 添加对python的支持

    接下来需要让PTVS支持python,打开vs2013,工具->选项->Python tools->Environment Options,加上对python的支持。
  

5 pip的安装

    pip是python对库的管理方式,它使我们可以很方便的安装需要的扩展库,所以最好首先安装它,我用的是7.1.2版本http://download.csdn.net/detail/whegqing/9377277

    至此,Python的基本模块已经安装完成!

二、图像处理的应用

1、安装numpy

    numpy是python进行科学计算的一个基础库,目前只支持vs2008,vs2013中不能用pip直接安装,我用的是编译好的numpy包
    numpy-1.9.2+mkl-cp27-none-win32.whl
    将其解压到D:\Program Files\Python27\Lib\site-packages目录下,亦可在dos'环境下对其安装。
    接下来让ptvs更新一下numpy库,以支持自动提示。
    选择Refresh DB即可。

    测试一下numpy库,打开python的交互窗口,输入如下指令。  

2、安装scipy,sympy

    scipy库实现了一些基本的计算法,sympy是python的数学符号计算库,安装过程与上numpy安装过程相似,下载编译包http://download.csdn.net/detail/whegqing/9377360http://download.csdn.net/detail/whegqing/9377376并Refresh DB。
    测试用来检测安装是否成功,必不可少,这里不再详细介绍。

3、IPython

3.1 安装
    可以从pip直接安装它,但是必须指定版本<3.0,因为ptvs只支持2的版本。

    PTVS会自动下载安装,接着Refresh DB即可。
3.2 配置PTVS使用Python
     
    关闭vs并重新打开。
3.3 测试
    此时做测试会出现错误,别担心,是因为缺少相应的库文件,现在安装即可。
    下载安装pyzmq库,这里不再提供资源。

4、图像处理

4.1 matplotlib安装
    Matplotlib是一个python的图形框架,类似于MATLAB语言,安装过程不再累述。需要注意的是,在测试过程中会出现很多错误,这是因为缺少相应的支持库,下载安装相应的支持库,在做测试,就OK了!
4.2 traits安装
    traits用于pythoon的界面开发,需要wxPython或者PyQT的支持,这里选着wxPython,直接用pip按装是不行的,需要手动现在安装包。
    安装过程不再累述,但是记得一定要测试!!!
4.3 3D显示
    用于3D显示的库主要有vtk,mayavi,python等。

三、Opencv进行图像处理

    终于来到Opencv这部分了,Opencv是一个用于图像处理的强大工具。
    对Opencv的封装有两个库,一个是Opencv-python,另一个是pyopencv,我选的是第一个。
    安装过程不再累述,这里给出一个测试的案例:
    
   
    编译Opencv源码
    对Opencv源码的编译要用到CMake工具
    首先用CMake工具生成Opencv的工程文件。

    然后,打开Build目录下的OpenCV.sln编译就可以了。
最后给出相关的参考文献:
2018-04-17 09:15:49 HANNING563128766 阅读数 6860
  • Python+OpenCV3.3图像处理视频教程

    Python+OpenCV3.3图像处理视频培训课程:该教程基于Python3.6+OpenCV新版本3.3.0详细讲述Python OpenCV图像处理部分内容,包括opencv人脸识别、人脸检测、数字验证码识别等内容。是Python开发者学习图像知识与应用开发佳实践课程。

    5437 人正在学习 去看看 贾志刚

最近在做毕业设计,涉及到了图像处理的知识,遇到觉得有用的就记录一下,原理性的东西可能不多,重要是用的啦~我用的是python3.6,废话不多说,先上效果图

可见,这里实现的是一个定点切割,怎么实现的呢?来看看代码:

from PIL import Image

im = Image.open('F:/test.jpg')
# 图片的宽度和高度
img_size = im.size
print("图片宽度和高度分别是{}".format(img_size))

left = 80
upper = 210
right = 505
lower = 640

region = im.crop((left,upper,right,lower))
region.save("F:/crop_test.jpg")

这段代码,实现的是从一张大图上切指定区域的某个部分,主要就是利用crop()函数,crop()的参数,而在看了下面这段定义之后,我们应该关注一下crop()函数的这个4-tuple参数了

def crop(self, box=None):
"""
Returns a rectangular region from this image. The box is a
4-tuple defining the left, upper, right, and lower pixel
coordinate.

Note: Prior to Pillow 3.4.0, this was a lazy operation.

:param box: The crop rectangle, as a (left, upper, right, lower)-tuple.
:rtype: :py:class:`~PIL.Image.Image`
:returns: An :py:class:`~PIL.Image.Image` object.
"""

现在具体讲怎么设置(left,upper,right,lower)这个参数,其实简单点来说就是“左上右下”的顺序,我之前那个是怎么实现切割的呢?我是怎么获取这些边界的呢,其实很笨的方法,我使用了ps的坐标,拖动的时候就可以看到对应像素,如下图:


好了,最简单的切割完成了,在这里在贴一个自动切割多块的代码,切割个数是yy * xx个,可自行修改,知道了原理大家也可以自由发挥哦~效果图和代码如下:


from PIL import Image

im = Image.open("F:/test.jpg")
# 图片的宽度和高度
img_size = im.size
print("图片宽度和高度分别是{}".format(img_size))

xx = 3
yy = 2
x = img_size[0] // xx
y = img_size[1] // yy
for j in range(yy):
for i in range(xx):
left = i*x
up = y*j
right = left + x
low = up + y
region = im.crop((left,up,right,low))
print((left,up,right,low))
temp = str(i)+str(j)
region.save("f:/test/"+temp+".png")

python基本图像操作

阅读数 13732

医学图像处理

阅读数 1014

没有更多推荐了,返回首页