欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【计算机视觉】图像基础处理

程序员文章站 2023-12-24 13:26:03
...


(一)图像轮廓和直方图

相关代码如下:

from PIL import Image
from pylab import *

im = array(Image.open('F:/1.python/image/1.jpg').convert('L'))  
# 打开图像,并转成灰度图像
figure()
subplot(121)
gray()
contour(im, origin='image')
axis('equal')
axis('off')

subplot(122)
hist(im.flatten(), 128)
show()

代码结果显示:
【计算机视觉】图像基础处理
(刚运行出来的时候看到结果以为是错误的,就有点慌了。再仔细检查一下,会发现做的实验时轮廓以及轮廓的直方图显示。人物图像的轮廓可能比较不那么清晰,所以看着会有些渗人。)

因为怕结果出错,所以我又找了另外一张图测验,结果如下:
【计算机视觉】图像基础处理


(二)直方图均衡化

相关代码如下:

 # 直方图均衡化
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('F:/1.python/image/1.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,normed=True)

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

show()

代码结果显示:
【计算机视觉】图像基础处理
【计算机视觉】图像基础处理

此处注意!!

1、这里因为需要显示中文,所以需要安装一个PCV库,否则会提醒像下方一样的问题。
【计算机视觉】图像基础处理

安装PCV库的方法和步骤
(转载自 http://blog.sina.com.cn/s/blog_478055d80102wwge.html)

  1. 下载PCV库文件数据,下载地址:https://github.com/jesolem/PCV
  2. 将下载的文件解压
  3. 打开cmd,执行如下指令:
    (1)执行cd命令,转到你所解压到的PCV的文件夹中。
    (2)输入python setup.py install。
    (3)重启命令行,输入import PCV,如果没有报错,则说明PCV库安装成功。

2、下载完PCV库中再运行程序,发现出现了错误:Missing parentheses in call to ‘print’
【计算机视觉】图像基础处理
这是由于python版本的差异造成的问题。
python2版本中是:print “hello python!”
但是在python3中应该使用:print (“hello python!”)

而我的是python3.5,所以应该根据提示的文件路径,找到imtools.py这个代码文件,打开文件,将语句print imname + “…skipped” 改成print (imname + “…skipped”),然后保存文件,就可以正常运行python代码了。


(三)高斯滤波

相关代码:

 # -*- 高斯滤波器 -*-
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('F:/1.python/image/1.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)

show()

代码结果显示:
【计算机视觉】图像基础处理【计算机视觉】图像基础处理
上面两幅图都是显示了随着σ(标准差)的增加,一幅图像被模糊的程度。σ越大,处理后的图像细节丢失越多。如果打算模糊一幅彩色图像,只需简单地对每一个颜色通道进行高斯模糊,相关主要代码段如下:

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)

上一篇:

下一篇: