计算机视觉课程 第一章 图像处理基础

第一章主要内容为学习基本的图像操作和处理,包括图像的灰度图、直方图、高斯滤波、直方图均衡化,完成这些处理需要安装一下几个库:PIL,matplotlib、PCV、SciPy。所有代码均参考Python计算机视觉网上教程,学习网址:http://yongyuan.name/pcvwithpython/

一、图像及灰度图

这个实验首先要安装PIL(Python图像处理类库)和matplotlib库
打开VSCode,在右下角的终端直接输入pip install pillow即可安装PIL库(我已经安装成功所以会显示下图结果,大家也可以通过这种方式检测是否安装成功)
在这里插入图片描述
同理,输入pip install matplotlib即可安装matplotlib库
在这里插入图片描述
下面为实验代码

from PIL import Image
from pylab import *

from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)
figure()

pil_im = Image.open('work1.jpg')
gray()
subplot(121)
title(u'原图',fontproperties=font)
axis('off')
imshow(pil_im)

pil_im = Image.open('work1.jpg').convert('L')
subplot(122)
title(u'灰度图',fontproperties=font)
axis('off')
imshow(pil_im)

show()

运行结果为:
在这里插入图片描述
关于代码,有一个图片路径的问题,有的人报错的原因是因为路径名前面没有加“r”(参考代码第五行),这里表示对路径的转义,\加上一个字母有时候会表示为一些特殊字符,所以一定要在路径前加上小写r,或者像我一样把图片和代码放在一个目录下,就不需要额外加入路径。

二、图像轮廓和直方图

这个实验也只需要用到PIL和matplotlib库,所以直接给代码:

from PIL import Image
from pylab import *

# 添加中文字体支持
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)
im = array(Image.open('work1.jpg').convert('L'))  # 打开图像,并转成灰度图像

figure()
subplot(121)
gray()
contour(im, origin='image')
axis('equal')
axis('off')
title(u'图像轮廓', fontproperties=font)

subplot(122)
hist(im.flatten(), 128)
title(u'图像直方图', fontproperties=font)
plt.xlim([0,260])
plt.ylim([0,11000])

show()

实验结果为:
在这里插入图片描述
右侧直方图有时候会看不清整体情况,可以通过下方的放大镜按钮进行缩放,点击放大镜按钮后后,在直方图上按住鼠标左键拖动为放大,右键为缩小。

三、直方图均衡化

这里要用到PCV了,但是不能通过pip下载,需要下载压缩包,网址:https://github.com/jesolem/PCV
打开后点击右侧绿色按钮clone or download,接着点击Download ZIP下载,下载完成后解压文件,这时候切记不要直接安装,分别打开文件夹 PCV-master \ PCV \ tools ,找到tools文件夹之下的imtools文件,打开后将第27行代码print imname + "...skipped 替换为print (imname + "...skipped"),这里是因为Python3的版本print需要加括号为正确语法。改完代码以后保存,退回PCV-master的文件夹目录下,找到setup.py文件,这是为了确定该文件所在目录,然后在该文件夹下按左shift+鼠标右键,点击“在此处打开Powershell窗口”,在弹出的窗口输入python setup.py install安装PCV。该部分参考同学的博客 https://liujiashengjason.club/2019/03/03/hello-world/

下面贴上代码:

from PIL import Image
from pylab import *
from PCV.tools import imtools

# 添加中文字体支持
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)

im = array(Image.open('work1.jpg').convert('L'))  # 打开图像,并转成灰度图像
#im = array(Image.open('../data/AquaTermi_lowcontrast.JPG').convert('L'))
im2, cdf = imtools.histeq(im)

figure()
subplot(2, 2, 1)
axis('off')
gray()
title(u'原始图像', fontproperties=font)
imshow(im)

subplot(2, 2, 2)
axis('off')
title(u'直方图均衡化后的图像', fontproperties=font)
imshow(im2)

subplot(2, 2, 3)
axis('off')
title(u'原始直方图', fontproperties=font)
#hist(im.flatten(), 128, cumulative=True, normed=True)
hist(im.flatten(), 128, normed=True)

subplot(2, 2, 4)
axis('off')
title(u'均衡化后的直方图', fontproperties=font)
#hist(im2.flatten(), 128, cumulative=True, normed=True)
hist(im2.flatten(), 128, normed=True)

show()

实验结果为:
在这里插入图片描述

四、图像模糊

这个实验需要安装SciPy库,可以直接用pip安装,在终端输入pip install SciPy即可安装
在这里插入图片描述
代码部分:

from PIL import Image
from pylab import *
from scipy.ndimage import filters

# 添加中文字体支持
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)

#im = array(Image.open('board.jpeg'))
im = array(Image.open('work1.jpg').convert('L'))

figure()
gray()
axis('off')
subplot(1, 4, 1)
axis('off')
title(u'原图', fontproperties=font)
imshow(im)

for bi, blur in enumerate([2, 5, 10]):
  im2 = zeros(im.shape)
  im2 = filters.gaussian_filter(im, blur)
  im2 = np.uint8(im2)
  imNum=str(blur)
  subplot(1, 4, 2 + bi)
  axis('off')
  title(u'标准差为'+imNum, fontproperties=font)
  imshow(im2)

#如果是彩色图像,则分别对三个通道进行模糊
#for bi, blur in enumerate([2, 5, 10]):
#  im2 = zeros(im.shape)
#  for i in range(3):
#    im2[:, :, i] = filters.gaussian_filter(im[:, :, i], blur)
#  im2 = np.uint8(im2)
#  subplot(1, 4,  2 + bi)
#  axis('off')
#  imshow(im2)

show()

实验结果为:
在这里插入图片描述

五、学习总结

虽然这些代码都是参考学习网站的,但是我自己也看懂了,间接学习了python语言的语法。之后的学习中可能还要不断安装各种各样的库,这里建议大家可以去找找Anaconda的安装方法,这里有所有的python库。完成这次实验收获还是很多的,通过编辑博客会回头去看看自己原来的错误出在什么地方,巩固强化,最终解决问题。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值