OpenCV-Python 教程 -- Getting Started with Images

学习目标:

  • 学习图像读取、显示和保存
  • 熟悉三个函数:cv2.imread(),cv2.imshow(),cv2.imwrite()
  • 使用Matplotlib显示图像

Using OpenCV

读取图像

cv2.imread()读取图像。

第一个参数:图像的路径;

第二个参数:图像读取的方式。具体选项如下:

  • cv2.IMREAD_COLOR:读取彩色图像,忽略图像的透明度,是默认的读取方式。
  • cv2.IMREAD_GRAYSCALE:以灰度图的方式读取。
  • cv2.IMREAD_UNCHANGED:返回图像本身的通道数量,比如灰度图读出来就是单通道;彩色图读出来是3通道;带有透明度的图像,会读取alpha通道,就是4通道。

:可以使用整数表示图像读取的方式,分别为 1,0,-1。

代码展示:

import numpy as np
import cv2

# Load an color image in grayscale
img = cv2.imread('messi5.jpg', 0)

注:如果图片路径错误,会报错,print(img),输出: None

显示图像

cv2.imshow(),在窗口显示图像,窗口会适应图像的大小。

第一个参数:字符串,窗口的名字。

第二个参数:图像数据。

代码展示:

cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllwindows()

cv2.waitKey():键盘绑定函数。如果参数为具体数字,比如5,即5毫秒后自动关闭窗口。如果参数为0,那么点击键盘任何键,窗口会关闭。

cv2.destroyAllWindows():销毁所有打开的窗口。

cv2.destroyWindow() :销毁指定窗口,参数是窗口的名字。

:通常可以提前创建windows,之后在载入图像。这种情况下,可以控制窗口的大小,对于大图显示,非常实用。函数如下:

cv2.namedWindow(),默认参数为 cv2.WINDOW_AUTOSIZE,自动缩放窗口,适应图像的大小。cv2.WINDOW_NORMAL,可以手工调整窗口大小。

代码展示:

img = cv2.imread('meshA.jpg')  # (w, h, d) = (4000, 3000, 3)
cv2.namedWindow('meshA', cv2.WINDOW_NORMAL)
cv2.resizeWindow('meshA', 400, 300)
print(img.shape)
cv2.imshow('meshA', img)  # 正常显示图片,窗口大小为(400, 300)
cv2.waitKey(0)
cv2.destroyAllWindows()


img = cv2.imread('meshA.jpg')  # (w, h, d) = (4000, 3000, 3)
cv2.namedWindow('meshA', cv2.WINDOW_AUTOSIZE)
cv2.resizeWindow('meshA', 400, 300)  # 由于参数:cv2.WINDOW_AUTOSIZE, 该语句没有作用
print(img.shape)
cv2.imshow('meshA', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

图像保存

cv2.imwrite(),保存图像。

第一个参数:图像名字,通常包含路径。

第二个参数:内存的图像数据。

代码展示:

cv2.imwrite('messigray.png',img)

内容总结

img = cv2.imread('../data/messipyr.jpg', 0)
print(img.shape)
cv2.imshow('image', img)
k = cv2.waitKey(0)

if k == 27:  # wait for ESC key to exit
     cv2.destroyAllWindows()
elif k == ord('s'):  # wait for 's' key to save and exit
     cv2.imwrite('messigray.png', img)
     cv2.destroyAllWindows()

Using Matplotlib

Matplotlib是针对Python的画图库,包含各种处理方法。下面看如何显示图像:

import numpy as np
import cv2
from matplotlib import pyplot as plt

img = cv2.imread('messi5.jpg',0)
plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([]), plt.yticks([])  # to hide tick values on X and Y axis
plt.show()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值