OpenCV教程1(python)

OpenCV教程1

OpenCV(python)安装

工欲善其事必先利其器,所以学好OpenCV第一步是将相关的环境搭建起来。本教程是基于windows上的python3.X的,所以首先你得安装了python3.X。没有安装的可以去python官网下载对应的版本,双击点击下一步,下一步,直至安装成功。
python官网
好了,python安装完了,下一步就是安装OpenCV了。因OpenCV需要用到numpy库,得先安装numpy库。win+R键输入cmd进入控制台黑窗口,输入pip install numpy,回车。
控制台黑窗口
接下来就是正式安装OpenCV了,去Python Extension Packages这个网站,按ctrl+F进行搜索,输入opencv,回车,找到了OpenCV对应的下载链接。
OpenCV下载链接
下载完成后,还是在黑窗口,输入pip install 你的路径名\完整的文件名.whl 后回车,提示安装成功了就行了。
下面的基础教程是建立在你学习过python的情况下,要不然会遇到很多问题。没有学过python的,可以去网上找一些基础的教程来学习,只需要大致了解一下python的基本语法就可以。

OpenCV基础操作-图片

1.读入并显示图片
import numpy as np
import cv2
img = cv2.imread(r'lighthouse.png',cv2.IMREAD_COLOR)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

lighthouse.png链接
运行程序结果如下:
运行结果
解释一下代码,import numpy as npimport cv2是用来引入相应的模块的,以便在程序中使用。

使用cv.imread() 读入图像,第一个参数是图片的文件名,在不同的路径中,需要加入路径名。r'lighthouse.png'字符串前面的r表示字符串中取消所有的转义。第二个参数表示如何读取图片,常用的有几个值:
cv2.IMREAD_COLOR:读入一副彩色图像。图像的透明度会被忽略,这是默认参数。
cv2.IMREAD_GRAYSCALE:以灰度模式读入图像。
cv2.IMREAD_UNCHANGED:读入一幅图像,并且包括图像的 alpha 通道。
返回值是一个包含图片数据的np.array数组型,OpenCV中所有的图片都是用np.array来表示的。
注意:图片的路径就算是错的,OpenCV也不会提醒你的,只会返回None,这需要自己写代码时注意。

使用cv2.imshow 显示图片,第一个参数是显示窗口的名字,在上面的运行结果中,可以看到窗口名字为'image'。第二个参数是要指向图片数组的变量名。
这里如果需要显示多幅图片,可以为每个窗口指定不同的名字。若指定相同的名字,OpenCV只会用后面的去覆盖前面的图片。
特殊的情况,你可以用cv2.namedWindow()先创建一个窗口。第一个 参数为窗口名字,第二个参数常用的可以取:
cv2.WINDOW_AUTOSIZE:默认的,窗口大小根据图片的大小,但窗口的大小不可以改变。
cv2.WINDOW_NORMAL:窗口大小可以改变。

import numpy as np
import cv2
img = cv2.imread(r'lighthouse.png',cv2.IMREAD_COLOR)
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.waitKey() 是一个键盘绑定函数。需要指出的是它的时间尺度是毫秒级。函数等待特定的几毫秒,看是否有键盘输入。特定的几毫秒之内,如果按下任意键,这个函数会返回按键的 ASCII 码值,程序将会继续运行。如果没有键盘输入,返回值为 -1,如果我们设置这个函数的参数为 0,那它将会无限期的等待键盘输入。
cv2.destroyAllWindows() 可以轻易删除任何我们建立的窗口。如果你想删除特定的窗口可以使用 cv2.destroyWindow(),参数是你想删除的窗口名。

保存图片
cv2.imwrite('messigray.png',img)

其中cv2.imwrite() 第一个参数是你想使用的文件名,OpenCV支持大多数的图片文件格式,不用太担心图片格式不支持。第二个参数是你想要保存的图片。

总结

下面用一个例子来综合运用上述知识

import numpy as np
import cv2
img = cv2.imread(r'office_5.jpg',cv2.IMREAD_COLOR)
cv2.namedWindow('image',cv2.WINDOW_NORMAL)
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == 27: #27为'ESC'键的ASCII码值
    cv2.destroyAllWindows()
elif k == ord('s'): #ord()函数是获取单个字符的ASCII码值
    cv2.imwrite(r'office.jpg',img)
    cv2.destroyAllWindows()

office_5.jpg链接

下一节我们介绍一下OpenCV操作视频。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值