当前位置:首页 » 编程语言 » python图像处理

python图像处理

发布时间: 2022-01-25 13:16:20

A. python可以用来处理图像吗

可以的,
PythonWare公司提供了免费的Python图像处理工具包PIL(Python Image Library),该软件包提供了基本的图像处理功能,如:

改变图像大小,旋转图像,图像格式转换,色场空间转换,图像增强,直方图处理,插值和滤波等等。虽然在这个软件包上要实现类似MATLAB中的复杂的图像处理算法并不太适合,但是Python的快速开发能力以及面向对象等等诸多特点使得它非常适合用来进行原型开发。

在PIL中,任何一副图像都是用一个Image对象表示,而这个类由和它同名的模块导出,因此,最简单的形式是这样的:

import Image img = Image.open(“dip.jpg”)
注意:第一行的Image是模块名;第二行的img是一个Image对象;
Image类是在Image模块中定义的。关于Image模块和Image类,切记不要混淆了。现在,我们就可以对img进行各种操作了,所有对img的
操作最终都会反映到到dip.img图像上。

PIL提供了丰富的功能模块:Image,ImageDraw,ImageEnhance,ImageFile等等。最常用到的模块是
Image,ImageDraw,ImageEnhance这三个模块。下面我对此分别做一介绍。关于其它模块的使用请参见说明文档.有关PIL软件包和
相关的说明文档可在PythonWare的站点www.Pythonware.com上获得。

Image模块:

Image模块是PIL最基本的模块,其中导出了Image类,一个Image类实例对象就对应了一副图像。同时,Image模块还提供了很多有用的函数。

(1)打开一文件:
import Image img = Image.open(“dip.jpg”)

这将返回一个Image类实例对象,后面的所有的操作都是在img上完成的。

(2)调整文件大小:

import Image img = Image.open("img.jpg") new_img = img.resize
((128,128),Image.BILINEAR) new_img.save("new_img.jpg")

原来的图像大小是256x256,现在,保存的new_img.jpg的大小是128x128。

就是这么简单,需要说明的是Image.BILINEAR指定采用双线性法对像素点插值。

在批处理或者简单的Python图像处理任务中,采用Python和PIL(Python Image Library)的组合来完成图像处理任务是一个很不错的选择。设想有一个需要对某个文件夹下的所有图像将对比度提高2倍的任务。用Python来做将是十分简单的。当然,我也不得不承认Python在图像处理方面的功能还比较弱,显然还不适合用来进行滤波、特征提取等等一些更为复杂的应用。我个人的观点是,当你要实现这些“高级”的算法的时候,好吧,把它交给MATLAB去完成。但是,如果你面对的只是一个通常的不要求很复杂算法的图像处理任务,那么,Python图像处理应该才是你的最佳搭档。

B. python图像处理opencv cv.createimage怎么用

Python:cv.CreateImage(size, depth, channels)

size– Image width and height

depth– Bit depth of image elements

channels– Number of channels per pixel

上面是opencv官方的文档,三个参数:

  1. 新建图像的长宽尺寸,像素数如:1920*1080

  2. 像素的位深,能够描述图像的色彩数量,一般是8位或者16位深,IPL_DEPTH_8U 或者IPL_DEPTH_16U

  3. 单像素的通道数量,opencv支持1~4通道,1通道就是黑白图,由位深描述由黑到白的程度。3通道就是常规的RGB通道了

C. python图像处理初学者求助

Pillow是Python里的图像处理库(PIL:Python Image Library),提供了了广泛的文件格式支持,强大的图像处理能力,主要包括图像储存、图像显示、格式转换以及基本的图像处理操作等。
1)使用 Image 类
PIL最重要的类是 Image class, 你可以通过多种方法创建这个类的实例;你可以从文件加载图像,或者处理其他图像, 或者从 scratch 创建。
要从文件加载图像,可以使用open( )函数,在Image模块中:

1
2

>>> from PIL import Image
>>> im = Image.open("E:/photoshop/1.jpg")

加载成功后,将返回一个Image对象,可以通过使用示例属性查看文件内容:

1
2
3

>>> print(im.format, im.size, im.mode)
('JPEG', (600, 351), 'RGB')
>>>

format 这个属性标识了图像来源。如果图像不是从文件读取它的值就是None。size属性是一个二元tuple,包含width和height(宽度和高度,单位都是px)。 mode 属性定义了图像bands的数量和名称,以及像素类型和深度。常见的modes 有 “L” (luminance) 表示灰度图像, “RGB” 表示真彩色图像, and “CMYK” 表示出版图像。
如果文件打开错误,返回 IOError 错误。
只要你有了 Image 类的实例,你就可以通过类的方法处理图像。比如,下列方法可以显示图像:

1

im.show()

2)读写图像
PIL 模块支持大量图片格式。使用在 Image 模块的 open() 函数从磁盘读取文件。你不需要知道文件格式就能打开它,这个库能够根据文件内容自动确定文件格式。要保存文件,使用 Image 类的 save() 方法。保存文件的时候文件名变得重要了。除非你指定格式,否则这个库将会以文件名的扩展名作为格式保存。
加载文件,并转化为png格式:

1
2
3
4
5
6
7
8
9
10
11
12
13

"Python Image Library Test"
from PIL import Image
import os
import sys

for infile in sys.argv[1:]:
f,e = os.path.splitext(infile)
outfile = f +".png"
if infile != outfile:
try:
Image.open(infile).save(outfile)
except IOError:
print("Cannot convert", infile)

save() 方法的第二个参数可以指定文件格式。
3)创建缩略图
缩略图是网络开发或图像软件预览常用的一种基本技术,使用Python的Pillow图像库可以很方便的建立缩略图,如下:

1
2
3
4
5
6
7

# create thumbnail
size = (128,128)
for infile in glob.glob("E:/photoshop/*.jpg"):
f, ext = os.path.splitext(infile)
img = Image.open(infile)
img.thumbnail(size,Image.ANTIALIAS)
img.save(f+".thumbnail","JPEG")

上段代码对photoshop下的jpg图像文件全部创建缩略图,并保存,glob模块是一种智能化的文件名匹配技术,在批图像处理中经常会用到。
注意:Pillow库不会直接解码或者加载图像栅格数据。当你打开一个文件,只会读取文件头信息用来确定格式,颜色模式,大小等等,文件的剩余部分不会主动处理。这意味着打开一个图像文件的操作十分快速,跟图片大小和压缩方式无关。
4)图像的剪切、粘贴与合并操作
Image 类包含的方法允许你操作图像部分选区,PIL.Image.Image.crop 方法获取图像的一个子矩形选区,如:

1
2
3
4

# crop, paste and merge
im = Image.open("E:/photoshop/lena.jpg")
box = (100,100,300,300)
region = im.crop(box)

矩形选区有一个4元元组定义,分别表示左、上、右、下的坐标。这个库以左上角为坐标原点,单位是px,所以上诉代码复制了一个 200×200 pixels 的矩形选区。这个选区现在可以被处理并且粘贴到原图。

1
2

region = region.transpose(Image.ROTATE_180)
im.paste(region, box)

当你粘贴矩形选区的时候必须保证尺寸一致。此外,矩形选区不能在图像外。然而你不必保证矩形选区和原图的颜色模式一致,因为矩形选区会被自动转换颜色。
5)分离和合并颜色通道
对于多通道图像,有时候在处理时希望能够分别对每个通道处理,处理完成后重新合成多通道,在Pillow中,很简单,如下:

1
2

r,g,b = im.split()
im = Image.merge("RGB", (r,g,b))

对于split( )函数,如果是单通道的,则返回其本身,否则,返回各个通道。
6)几何变换
对图像进行几何变换是一种基本处理,在Pillow中包括resize( )和rotate( ),如用法如下:

1
2

out = im.resize((128,128))
out = im.rotate(45) # degree conter-clockwise

其中,resize( )函数的参数是一个新图像大小的元祖,而rotate( )则需要输入顺时针的旋转角度。在Pillow中,对于一些常见的旋转作了专门的定义:

1
2
3
4
5

out = im.transpose(Image.FLIP_LEFT_RIGHT)
out = im.transpose(Image.FLIP_TOP_BOTTOM)
out = im.transpose(Image.ROTATE_90)
out = im.transpose(Image.ROTATE_180)
out = im.transpose(Image.ROTATE_270)

7)颜色空间变换
在处理图像时,根据需要进行颜色空间的转换,如将彩色转换为灰度:

1
2

cmyk = im.convert("CMYK")
gray = im.convert("L")

8)图像滤波

D. 图像处理python和c语言哪个好

p是脚本语言,c是编译语言,p对于c多了一个字节码转机器码过程,运行速度c高。
p是用c写的。p有强大第三方库支持,所以开发成本周期都比c少。
所以就学习而言,c要学好。
就开发而言,不光图像处理,包括其他领域,一般不是非常底层不会用c,都会用相应的高级语言,要的是开发效率。
所以,单纯做图像处理相关开发,用p较好。

E. python图像处理代码,望大神详细解释。越详细越好

#初始化一个矩形np.max(marks)+1行,3列,默认值为0
colorTab=np.zeros((np.max(marks)+1,3))

#遍历数组,给每行的3列赋值,就是RGB颜色值,8位的
foriinrange(len(colorTab)):
aa=np.random.uniform(0,255)
bb=np.random.uniform(0,255)
cc=np.random.uniform(0,255)
colorTab[i]=np.array([aa,bb,cc],np.uint8)

#初始化另一个跟img图像形状大小一样的图像,一副黑色图像
bgrImage=np.zeros(img.shape,np.uint8)

#遍历marks形状的行列
foriinrange(marks.shape[0]):
forjinrange(marks.shape[1]):

index=marks[i][j]
#判断是不是区域与区域之间的分界,如果是边界(-1),则使用白色显示
ifindex==-1:
bgrImage[i][j]=np.array([255,255,255])#像素点设置位白色
else:
bgrImage[i][j]=colorTab[index]#像素点设置位上边随机生成的颜色值

#显示处理后的图像图像
cv2.imshow('AfterColorFill',bgrImage)
#总结,先生成一个跟marks相同数量的row*col的一张颜色表,然后创建一个跟marks相同大小的一副黑色图像
#最后对黑色图像画出白色边界和内部随机彩色像素值

F. 有哪些Python图像处理方面的文章或实例

首先是基础理论,涉及到数学,概率,信号处理,机器学习等领域。基础只能慢慢积累。至于工具,入门的有PIL,但是PIL对底层像素操作支持的不好,只适合做效果。python科学计算,Numpy是基础,然后是Scipy,Scipy里面包含了很多科学计算方面的函数模块,其中有一个ndimage,里面实现了图像处理的一些经典方法,然后是scikit-image,opencv等大而全的图像处理库,ITK等某一领域专用的类库,可视化可以用matplotlib,三维的可以用vtk或mayavi。最后强烈推荐我个人的开源项目,ImagePy,可以对任何一个基于Numpy的函数,提供界面和交互支持,非常适合学习与研究。

G. 可用python语言做图像处理入门吗

python 很适合做图像处理。
有一个第三方类库 PLI 。

H. 用python做 图像处理怎么样

只是用python做过简单的图像处理,用PIL这个库,要是想看好处,就看看这个http://developer.51cto.com/art/201003/188186.htm

I. python 图像处理需要哪些包

安装一个 PIL(python imageing Library) 拥有常见的操作 缩放 模糊 旋转 切片 滤镜 输出文字 调色板 等等

J. 怎样使用Python图像处理

Python图像处理是一种简单易学,功能强大的解释型编程语言,它有简洁明了的语法,高效率的高层数据结构,能够简单而有效地实现面向对象编程,下文进行对Python图像处理进行说明。
当然,首先要感谢“恋花蝶”,是他的文章“用Python图像处理 ” 帮我坚定了用Python和PIL解决问题的想法,对于PIL的一些介绍和基本操作,可以看看这篇文章。我这里主要是介绍点我在使用过程中的经验。
PIL可以对图像的颜色进行转换,并支持诸如24位彩色、8位灰度图和二值图等模式,简单的转换可以通过Image.convert(mode)函数完 成,其中mode表示输出的颜色模式。例如''L''表示灰度,''1''表示二值图模式等。
但是利用convert函数将灰度图转换为二值图时,是采用固定的阈 值127来实现的,即灰度高于127的像素值为1,而灰度低于127的像素值为0。为了能够通过自定义的阈值实现灰度图到二值图的转换,就要用到 Image.point函数。
深度剖析Python语法功能
深度说明Python应用程序特点
对Python数据库进行学习研究
Python开发人员对Python经验之谈
对Python动态类型语言解析

Image.point函数有多种形式,这里只讨论Image.point(table, mode),利用该函数可以通过查表的方式实现像素颜色的模式转换。其中table为颜色转换过程中的映射表,每个颜色通道应当有256个元素,而 mode表示所输出的颜色模式,同样的,''L''表示灰度,''1''表示二值图模式。
可见,转换过程的关键在于设计映射表,如果只是需要一个简单的箝位值,可以将table中高于或低于箝位值的元素分别设为1与0。当然,由于这里的table并没有什么特殊要求,所以可以通过对元素的特殊设定实现(0, 255)范围内,任意需要的一对一映射关系。
示例代码如下:
import Image # load a color image im = Image.open(''fun.jpg'') # convert to grey level image Lim = im.convert(''L'') Lim.save(''fun_Level.jpg'') # setup a converting table with constant threshold threshold = 80 table = [] for i in range(256): if i < threshold: table.append(0) else: table.append(1) # convert to binary image by the table bim = Lim.point(table, ''1'') bim.save(''fun_binary.jpg'')

IT部分通常要完成的任务相当繁重但支撑这些工作的资源却很少,这已经成为公开的秘密。任何承诺提高编码效率、降低软件总成本的IT解决方案都应该进行 周到的考虑。Python图像处理所具有的一个显着优势就是可以在企业的软件创建和维护阶段节约大量资金,而这两个阶段的软件成本占到了软件整个生命周期中总成本 的50%到95%。
Python清晰可读的语法使得软件代码具有异乎寻常的易读性,甚至对那些不是最初接触和开发原始项目的程序员都 能具有这样的强烈感觉。虽然某些程序员反对在Python代码中大量使用空格。
不过,几乎人人都承认Python图像处理的可读性远胜于C或者Java,后两 者都采用了专门的字符标记代码块结构、循环、函数以及其他编程结构的开始和结束。提倡Python的人还宣称,采用这些字符可能会产生显着的编程风格差 异,使得那些负责维护代码的人遭遇代码可读性方面的困难。转载

热点内容
博图脚本编辑 发布:2024-11-15 20:41:06 浏览:312
带密码的箱子钥匙在哪里 发布:2024-11-15 20:40:12 浏览:236
两个次梁相交怎么配置 发布:2024-11-15 20:27:35 浏览:373
android关机实现 发布:2024-11-15 20:26:42 浏览:56
木糠压缩原理 发布:2024-11-15 20:22:53 浏览:654
编译原理难以理解的问题 发布:2024-11-15 20:11:25 浏览:130
安卓9是什么水平 发布:2024-11-15 20:06:57 浏览:185
intel快速存储ssd 发布:2024-11-15 20:00:27 浏览:143
吃鸡配置太低怎么调高画质 发布:2024-11-15 19:58:19 浏览:735
王者怎么设置来电屏蔽安卓 发布:2024-11-15 19:56:08 浏览:450