我是靠谱客的博主 忧郁玉米,最近开发中收集的这篇文章主要介绍python最基础处理图片_Python---图像基础处理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、软件安装及环境配置

在做图像处理时我使用了pycharm开发平台加python(3.7.0)环境,并且需要使用很多图像库以及工具库

PIL(Python Imaging Library,图像处理类库),提供了通用的图像处理功能(图像缩放、裁剪、旋转、颜色转换等),以及大量有用的基本图像操作。

PCV:包含了计算机视觉中所运用的一些工具包,如图像分类中的knn、bayes,聚类中的hcluster,地理标记中的sfm、homographt、wrap等,以及图像检索,特征值提取。

Matplotlib:是python比较底层的可视化库,可定制性强、图表资源丰富、简单易用、达到出版质量级别。

还有其他的包就不一一介绍了,这些都是图像在处理之前的准备工作。

我下载安装了这些包

二、图像的基本处理

1.直方图

图像的直方图用来表征该图像像素值的分布情况。用一定数目的小区间(bin)来指定表征像素值的范围,每个小区间会得到落入该小区间表示范围的像素数目。图像的直方图可以使用 hist() 函数绘制。hist() 函数的第二个参数指定小区间的数目。需要注意的是,因为 hist() 只接受一维数组作为输入,所以我们在绘制图像直方图之前,必须先对图像进行压平处理,即灰度化处理。

源代码:

from PIL import Image

im = Image.open('E://Python_code//sea.jpg.jpg')

im.show()

im_change = Image.open('E://Python_code//sea.jpg').convert('L')

im_change.show()

hist(im_change.flatten(),128)

plt.xlim([0,260])

plt.ylim([0,10000])

show()

结果:

原图

灰度化图像

图像灰度后直方图

2.直方图均衡化

直方图均衡化是指将一幅图像的灰度直方图变平,使变换后的图像中每个灰度值的分布概率都相同。在对图像做进一步处理之前,直方图均衡化通常是对图像灰度值进行归一化的一个非常好 的方法,并且可以增强图像的对比度。

源代码:

# coding=utf-8

from PIL import Image

from pylab import *

from numpy import *

from PCV.tools import imtools

from matplotlib.font_manager import FontProperties

font = FontProperties(fname=r"c:windowsfontsSimSun.ttc", size=14)

im = array(Image.open("E://Python_code//sea.jpg").convert('L')) # 打开图像,并转成灰度图像

im2, cdf = imtools.histeq(im)

figure()

subplot(2, 2, 1)

axis('off')

gray()

title(u'(a)灰度化图', fontproperties=font)

imshow(im)

subplot(2, 2, 2)

axis('off')

title(u'(b)灰度均衡化图', fontproperties=font)

imshow(im2)

subplot(2, 2, 3)

axis('off')

title(u'(c)灰度化直方图', fontproperties=font)

hist(im.flatten(), 128, normed=True)

subplot(2, 2, 4)

axis('off')

title(u'(d)均衡化后直方图', fontproperties=font)

hist(im2.flatten(), 128, normed=True)

show()

结果:

3.高斯滤波图

高斯滤波器是一种线性滤波器,能够有效的抑制噪声,平滑图像。其作用原理和均值滤波器类似,都是取滤波器窗口内的像素的均值作为输出。其窗口模板的系数和均值滤波器不同,均值滤波器的模板系数都是相同的为1;而高斯滤波器的模板系数,则随着距离模板中心的增大而系数减小。所以,高斯滤波器相比于均值滤波器对图像个模糊程度较小。

源代码:

import cv2

import numpy as np

import matplotlib.pyplot as plt

img = cv2.imread('E://Python_code//sea.jpg')

source = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)

result = cv2.GaussianBlur(source, (10,10), 0)#高斯滤波,这里使用10*10的卷积核

titles = ['原图', '高斯滤波图']

images = [source, result]

for i in range(2):

plt.subplot(1,2,i+1), plt.imshow(images[i], 'gray')

plt.title(titles[i])

plt.xticks([]),plt.yticks([])

plt.show()

结果:

二、总结:

作为初学python小白,感觉python语言简单,非常适合阅读,也易学,python虽然是用c语言写的,但是它摒弃了c中非常复杂的指针,简化了python的语法。通过这门课我了解到Python标准库确实很庞大。python有可定义的第三方库可以使用。它可以帮助你处理各种工作,除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。Python确实是一种十分精彩又强大的语言。它合理地结合了高性能与使得编写程序简单有趣的特色。同时Python采用强制缩进的方式使得代码具有极佳的可读性。安装软件的过程中遇到了无法导库,pip不能下载第三方库等问题,但是通过询问同学百度得以大部分的解决,以后要认真学习!!

最后

以上就是忧郁玉米为你收集整理的python最基础处理图片_Python---图像基础处理的全部内容,希望文章能够帮你解决python最基础处理图片_Python---图像基础处理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部