python opencv 入门 加载图片(1)

内容来自OpenCV-Python Tutorials 自己翻译整理
目标:

  1. 读取图片,显示图片,保存图片
  2. 学习以下函数 cv2.imread(), cv2.imshow() , cv2.imwrite()
  3. 使用Matplotlib显示图片

读取图片:

使用cv2.imread() 函数读取图片,图片的位置应该是在当前的目录下
该函数有两个参数,第一个参数是图片名称,第二个参数是使用哪种方式读取图片。
第二个参数有如下三种

  • cv2.IMREAD_COLOR 加载一个彩色图片,图片的透明度会被忽律,也是缺省参数。
  • cv2.IMREAD_GRAYSCALE 加载黑白图片
  • cv2.IMREAD_UNCHANGED 加载包含alpha通道的图片

上面三个参数可以用1 0 -1表示

#!/usr/bin/env python
# coding=utf-8
import cv2
import numpy as np
#把图片加载为黑白图片
img = cv2.imread('test.jpg',0)

如果图片的路径错误,不会抛出错误,什么也不输出

显示图片:
使用 cv2.imshow()函数在窗口中显示图片,窗口的尺寸自动适应图片大小,函数中有两个参数,第一个参数是窗口名称,第二个参数是加载的图片,可以设置不同窗口名,创建多个窗口。

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

cv2.waitKey() 函数绑定键盘,参数是毫秒,该函数等待指定的毫秒来接受键盘输入,按下任意键继续

cv2.destroyAllWindows() 销毁所有窗口

想销毁指定窗口可以使用 cv2.destroyWindow()函数,参数是想要销毁的窗口名称

写入图片:
使用 cv2.imwrite() 函数保存图片
该函数中有两个参数,第一个是文件名,第二个是想要保存的图片

#!/usr/bin/env python
# coding=utf-8
import cv2
import numpy as np

img = cv2.imread('test.jpg',0)
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()

效果
这里写图片描述

使用Matplotlib库:

#!/usr/bin/env python
# coding=utf-8

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

img=cv2.imread("test.jpg",0)
plt.imshow(img,cmap='gray',interpolation='bicubic')
plt.xticks([]),plt.yticks([])
plt.show()

注意:
彩色图片使用opencv加载是使用BGR模式,但是使用Matplotlib库是用RGB模式,所以彩色图片不会在Matplotlib中正确的显示,如果使用opencv读取图片。
原图
这里写图片描述
使用Matplotlib读取的图片
这里写图片描述

-_-蓝色的多肉变成黄色的了
解决方法

#!/usr/bin/env python
# coding=utf-8

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

img=cv2.imread("test.jpg")
b,g,r=cv2.split(img)
img2 = cv2.merge([r,g,b])
plt.imshow(img2)
plt.xticks([]),plt.yticks([])
plt.show()
  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值