栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

计算机视觉——简单图像处理

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

计算机视觉——简单图像处理

1.语言环境

1.1python环境的下载
下载了Anaconda,Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。这里采用的是Anaconda2-5.0.0进行下载,为了配合课本的学习,采用了python2.7的版本。Anaconda包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas等。

环境配置好之后打开cmd输入:conda --version
输出版本号之后说明安装成功了

1.2编辑器下载
我下载的是pycharm编辑器

2.图像处理

处理原图

2.1直方图处理

from PIL import Image
from pylab import *
 
 img = array(Image.open(r'C:UsersTZP888Pictures实验用图P2.jpg').convert('L'))
    # 新建一个图像
    figure()
    hist(img.flatten(), 128)
    show()
 
 
if __name__ == '__main__':
    Histogram()
 
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
    print_hi('PyCharm')


2.2高斯滤波

from PIL import Image
from pylab import *
from scipy.ndimage import filters
 
"""
函数说明:高斯滤波
Parameters:
    无
Returns:
    无
"""
def Gaussian():
    img = array(Image.open(r'C:UsersTZP888Pictures实验用图P2.jpg').convert('L'))
 
    figure()
    gray()
    axis('off')
    subplot(1, 4, 1)
    axis('off')
    title('原图')
    imshow(img)
 
    for bi, blur in enumerate([2, 5, 10]):
        img2 = zeros(img.shape)
        img2 = filters.gaussian_filter(img, blur)
        img2 = np.uint8(img2)
        imNum=str(blur)
        subplot(1, 4, 2 + bi)
        axis('off')
        title('标准差为'+imNum)
        imshow(img2)
    show()
 
if __name__ == '__main__':
    #高斯滤波
    mpl.rcParams['font.sans-serif'] = ['SimHei']
    Gaussian()


2.3直方图均衡化

from PIL import Image
from pylab import *
from numpy import *
"""
函数说明:直方图均衡化
Parameters:
    img:灰度图像
    nbr_bins=256:直方图使用小区间的数目
Returns:
    img2.reshape(img.shape):直方图均衡化后的图像
    cdf:用来做像素值映射的累积分布函数
"""
def Histeq(img,nbr_bins=256):
    #计算图像的直方图
    imhist,bins=histogram(img.flatten(),nbr_bins)
    #累计分布函数
    cdf = imhist.cumsum()
    #归一化
    cdf = 255*cdf/cdf[-1]
    #使用累积分布函数的线性插值,计算新的像素值
    img2 = interp(img.flatten(),bins[:-1],cdf)
 
    return img2.reshape(img.shape),cdf
 
if __name__ == '__main__':
    #直方图均衡化
    #解决title是方框的问题
    mpl.rcParams['font.sans-serif'] = ['SimHei']
    img = array(Image.open(r'C:UsersTZP888Pictures实验用图P2.jpg').convert('L'))
    img2,cdf = Histeq(img)
 
    figure()
    subplot(2, 2, 1)
    #关闭所有坐标轴线、刻度标记和标签
    axis('off')
    gray()
    title('原始图像')
    imshow(img)
 
    subplot(2, 2, 2)
    axis('off')
    title('直方图均衡化后的图像')
    imshow(img2)
 
    subplot(2, 2, 3)
    axis('off')
    title('原始直方图')
    # hist(im.flatten(), 128, cumulative=True, normed=True)
    hist(img.flatten(), 128)
 
    subplot(2, 2, 4)
    axis('off')
    title('均衡化后的直方图')
    # hist(im2.flatten(), 128, cumulative=True, normed=True)
    hist(img2.flatten(), 128)
 
    show()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/769701.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号