计算机视觉实验一——图像的基本操作
计算机视觉相关实验内容主要来自于《Python计算机视觉编程(Jan Erik Solem著)》这本书,感兴趣的同学可以系统学习。网盘下载链接: link
一、实验目标
- 分别使用 PIL 库和 OpenCV 库读取图像并实现可视化,对比OpenCV 读取和 PIL 读取的差异
- 利用 thumbnail() 函数创建图像缩略图,利用 resize() 函数处理图像,对比两者差别
- 绘制图像的轮廓与直方图
- 实现图像的灰度变换、直方图均衡化
- 实现图像的不同高斯模糊、计算导数
- ROF模型去噪
二、实验内容
1.分别使用 PIL 库和 OpenCV 库读取图像并实现可视化,对比OpenCV 读取和 PIL 读取的差异
①使用 PIL 库读取图像并实现可视化
from PIL import Image
# 读取图片
img = Image.open('img1.jpg')
# 显示图片,调用show方法
img.show()

②使用OpenCV 库读取图像并实现可视化
# 读入图像
# 1的话读取全彩图片 0读取灰度图片即黑白图片
img = cv2.imread('img1.jpg', 1)
# 显示图像
cv2.namedWindow('img', cv2.WINDOW_NORMAL)
cv2.resizeWindow('img', 500, 490)
cv2.imshow('img', img)
cv2.waitKey(0) # 让程序暂停,否则图片一闪而过来不及观察图片
# 保存图像
# IMWRITE_JPEG_QUALITY的取值范围为0-100,下面写入jpg格式,数值越小,压缩比越高,图片失真严重
cv2.imwrite('img1_copy.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 0])

③二者的差异
(1)输出差异
cv2.imread()读取的是图像的真实数据。lmage.open()函数只是保持了图像被读取的状态,但是图像的真实数据并未被读取。
(2)通道差异
Image.open()读取的通道顺序是RGB,cv2.imread()读取的通道顺序为BGR。
# 读入图像
# OpenCV读取
img1 = cv2.imread('img1.jpg')
# PIL读取
img2 = Image.open('img1.jpg')
# 显示图像
plt.figure(dpi=120)
plt.subplot(121) # 1代表行,2代表列,所以一共有2个图,1代表此时绘制第一个图。
plt.axis('off') # 取消坐标轴
plt.title("OpenCV") # 标题
plt.imshow(img1) # 显示图片
plt.subplot(122) # 1代表行,2代表列,所以一共有2个图,2代表此时绘制第二个图。
plt.axis('off') # 取消坐标轴

最低0.47元/天 解锁文章
906

被折叠的 条评论
为什么被折叠?



