[python opencv 计算机视觉零基础到实战] 一、opencv的helloworld
8899 打赏
1_bit 2020-12-14 18:16:24

前置条件

说明:本系列opencv实战教程将从基础到实战,若只是简单学习完python也可以通过该教程完成一般的机器学习编程;文中将会对很多python的基础内容进行讲解,但由于文章定位的原因将不会赘述过多的基础内容,基础内容进行第一次讲解后第二次将不会过多赘述,本文主要讲解的是opencv相关知识。

本文系统及环境:本文将在windows7操作系统下以python作为编程语言,完成对opencv的程序编写。python版本是3.8。

一、学习目标

  1. 安装opencv
  2. 了解什么是计算机视觉
  3. 了解读取图片的方法
  4. 了解显示图片的方法

二、完成opencv的helloworld程序编写

2.1 opencv是什么

要了解opencv是什么,首先可以看opencv的全程——Open Source Computer Vision Library,翻译过来为“开源的计算机系统识别库”。那计算机视觉指的是什么呢?

计算机视觉并不是指计算机可以去查看某些东西,这个说法太过片面,并不严谨;计算机视觉其实是研究如何让计算机去代替人去观察,并且进行一些目标上的处理。在opencv中,集成了很多方法,可以让我们开发者很容易的完成某些视觉上的操作,完成某些目标;通过opencv,可以让我们无需了解太多的算法知识,简便的进行开发。

2.2 opencv可以做什么

opencv应用广泛,例如人脸识别、车牌识别、机器人、指纹、文字等,还可以对图片信息进行方便的编辑,例如可以模糊图片、检测目标等;我们可以通过学习opencv可以做一个“检测老板面部自动切屏程序”、“类似于图片抠图等图片操作的软件”、“自动驾驶”等。

2.3 opencv的安装

opencv的安装很简单,使用pip命令安装即可。命令如下:

pip install opencv-python

安装完成后可以在cmd黑框框中进入python命令的交互界面,引入opencv即可知道是否已经安装成功。步骤如下:
首先输入python进入python命令的交互界面:

随后输入命令import cv2,引入OpenCV库:

若此时并未出错,则说明opencv安装正确。
其中import表示引入,import cv2表示引入cv2这个模块,cv2是模块名;其中import的作用是引入。

2.4 opencv的helloworld

opencv的helloworld程序跟一般的helloworld程序不同,指读取一张图片并且显示。我们打开自己的编辑器,我使用的编辑器是notepad。

opencv读取图片使用的是imread方法,在imread方法传入一张图片的路径即可读取到该图片,但需要注意的是,在读取图片时,路径不能出现中文、文件名最好是中文、在传入时还需要注意斜杆会转义,尽量的加r使文件路径不转义。查看以下示例:

img = cv2.imread(r'C:\Users\mx\Desktop\1.jpg')

以上代码读取一张路径为“C:\Users\mx\Desktop\1.jpg”的图片,并且赋值给img变量,这是img则为改图片对象。随后显示该变量内容需要先创建一个窗口,名为ImageShow,使用namedWindow方法。代码如下:

cv2.namedWindow("Image")

namedWindow接收2个参数,一个为窗口名称,另一个为显示方式;显示方式包括cv.WINDOW_AUTOSIZE与*cv.WINDOW_NORMAL,默认情况下是cv.WINDOW_AUTOSIZE;默认情况下并不能改变窗口大小,若图片太大,将会对查看造成一定的影响,使用cv.WINDOW_NORMAL则可以对窗口大小进行拖动更改,将会方便我们的查看。我们将以上代码更改,代码如下:

cv2.namedWindow("Image",cv.WINDOW_NORMAL)

接下来我们将显示图像,使用imshow方法。代码如下:

cv2.imshow("Image", img)

imshow方法接收2个参数,第一个是我们需要在哪个窗口显示的名称,第二个是读取后的图片对象img。若在上一步中不创建窗口Image,在使用imshow方法时依旧可以直接显示,此时将会创建一个当前所命名的窗口。接下来需要添加一个等待,防止程序运行完后自动关闭。代码如下:

cv2.waitKey (0)

接下来关掉窗口,调用destroyAllWindows方法,该方法将会销毁所有创建的窗口:

cv2.destroyAllWindows()

也可以使用destroyWindow方法销毁指定的窗口,如下代码:

cv2.destroyWindow("Image")

以上完整的代码如下:

import cv2

img = cv2.imread(r'C:\Users\mx\Desktop\1.jpg')#读取
cv2.namedWindow("Image",cv2.WINDOW_NORMAL)#创建一个窗口
cv2.imshow("Image", img)#显示图像
cv2.waitKey (0)#等待关闭
cv2.destroyAllWindows()#destroy

运行代码,将会出现图片:

以上图片左上角为title头,是窗口名称,并且改图片可以拖动改变大小。我们更改imshow代码,使其指定到一个未创建的窗口进行显示:

import cv2

img = cv2.imread(r'C:\Users\mx\Desktop\1.jpg')#读取
cv2.namedWindow("Image",cv2.WINDOW_NORMAL)#创建一个窗口
cv2.imshow("Image1", img)#显示图像
cv2.waitKey (0)#等待关闭
cv2.destroyAllWindows()#destroy

运行结果如下:

我们发现,这时创建了一个Image1窗口,该窗口显示了该图片内容,并且不能改动大小;我们使用namedWindow创建的Image窗口并没有指定显示内容,所以导致显示内容无,但是可以自动改变大小,这时因为我们创建该窗口时传入了cv2.WINDOW_NORMAL选择了可自由改变大小。这时可通过这个小例子很好的对比cv2.WINDOW_NORMAL与cv2.WINDOW_AUTOSIZE的区别。

这时也可以改变代码:

import cv2

img = cv2.imread(r'C:\Users\mx\Desktop\1.jpg')#读取
cv2.namedWindow("Image",cv2.WINDOW_NORMAL)#创建一个窗口
cv2.imshow("Image1", img)#显示图像
cv2.destroyWindow("Image")
cv2.waitKey (0)#等待关闭
cv2.destroyAllWindows()#destroy

以上代码中在waitKey 之前使用了destroyWindow方法对无用的Image窗口进行了销毁,运行时将会不再出现Image窗口。

三、总结

  1. 了解了安装opencv 的命令 pip install opencv-python
  2. 了解计算机视觉是研究如何让计算机去代替人去观察,并且进行一些目标上的处理
  3. 了解读取图片的方法imread
  4. 了解显示图片的方法imshow
  5. 了解窗口创建的多个模式WINDOW_NORMAL与WINDOW_AUTOSIZE
  6. 了解了销毁所有窗口的方法destroyAllWindows与销毁指定窗口的方法destroyWindow
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
评论
2个
时间排序
内容存在敏感词
    0 条记录 第 0 /
    相关专栏
    打赏作者
    易百纳技术社区
    1_bit
    您的支持将鼓励我继续创作!
    打赏金额:
    ¥1 易百纳技术社区
    ¥5 易百纳技术社区
    ¥10 易百纳技术社区
    ¥50 易百纳技术社区
    ¥100 易百纳技术社区
    支付方式:
    微信支付
    支付宝支付
    易百纳技术社区 微信支付
    易百纳技术社区
    打赏成功!

    感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

    举报反馈

    举报类型

    • 内容涉黄/赌/毒
    • 内容侵权/抄袭
    • 政治相关
    • 涉嫌广告
    • 侮辱谩骂
    • 其他

    详细说明

    审核成功

    发布时间设置
    发布时间:
    是否关联周任务-专栏模块

    审核失败

    失败原因
    备注
    Loading...
    易百纳技术社区
    确定要删除此文章、专栏、评论吗?
    确定
    取消
    易百纳技术社区
    活动规则
    • 1.周任务为周期性任务,每周周一00:00刷新,上周完成的任务不会累计到本周,本周需要从头开始任务,当前任务完成后才可以完成下一个任务
    • 2.发布在平台的专栏需为原创技术专栏,且社区作为首次发布的平台,在其他平台发布需注明为转载
    • 3.周任务中的专栏需要达到一定质量才会被计入完成总数中。具体以平台审核为准,如有疑问,可联系社区客服(ebainacs)。
    • 4.专栏/资料的任务以审核通过的篇数为准,每个任务数量不做累计。
    • 5.任务完成后,现金奖励直接打款到微信账户EBC/收益将自动发放到个人账户,可前往“我的钱包”查看;其他奖励请联系客服兑换。
    易百纳技术社区
    升级提醒
    升级

    恭喜您的社区称号由 升级为 “社区游民”

    同时为了感谢您对社区的支持,我们将送出xxx礼品一份, 记得领取哦~

    升级提醒
    易百纳技术社区