cv2库中一些函数的使用

最近在做一些实验,需要画图和对图像进行处理,所以用到  plt 库和  cv2 的库比较多

所以做点笔记

函数介绍 

1、读入图像函数

cv2.imread(filepath,flags)

参数一是想要读取图片的路径,参数二是值想要读取图片的格式

  • filepath:要读入图片的完整路径
  • flags:读入图片的标志 
    • cv2.IMREAD_COLOR:默认参数,加载彩色图片,可以直接写1。
    • cv2.IMREAD_GRAYSCALE:以灰度模式加载图片,可以直接写0。
    • cv2.IMREAD_UNCHANGED:读入完整图片,包括alpha通道,可以直接写-1。
import cv2
img = cv2.imread('AD.jpg',cv2.IMREAD_GRAYSCALE)

2、显示图像函数

cv2.imshow(wname,img)

第一个参数是显示图像的窗口的名字,第二个参数是要显示的图像(imread读入的图像),窗口大小自动调整为图片大小

参数1:需要载入图片的路径名,例如“C:/daima practice/opencv/mat3/mat3/image4.jpg”

参数2:加载图像的颜色类型。默认为1.  若为0则灰度返回,若为1则原图返回。

cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
#dv2.destroyWindow(wname)
  • cv2.waitKey顾名思义等待键盘输入,单位为毫秒,即等待指定的毫秒数看是否有键盘输入,若在等待时间内按下任意键则返回按键的ASCII码,程序继续运行。若没有按下任何键,超时后返回-1。参数为0表示无限等待。不调用waitKey的话,窗口会一闪而逝,看不到显示的图片。
  • cv2.destroyAllWindow()销毁所有窗口
  • cv2.destroyWindow(wname)销毁指定窗口

3、图片显示时长设置函数

cv2.waitKey(time)

唯一一个参数是在一个给定的时间内(单位ms)等待用户按键触发;如果用户没有按下键,则接续等待(循环)

常见:设置waitKey(0),则表示程序会无限制的等待用户的按键事件一般在imgshow的时候,如果设置waitKey(0),代表按任意键继续

显示视频时,延迟时间需要设置为 大于0的参数   delay>0时,延迟”delay”ms,在显示视频时这个函数是有用的,用于设置在显示完一帧图像后程序等待”delay”ms再显示下一帧视频;如果使用waitKey(0)则只会显示第一帧视频

import time
import cv2

img = cv2.imread('AD.jpg')
cv2.imshow('图片',img)
# cv2.waitKey(1000)
cv2.waitKey(1)
# cv2.waitKey(0)
#time.sleep(1)

实际上,waitkey控制着imshow的持续时间,当imshow之后不跟waitkey时,相当于没有给imshow提供时间展示图像,所以只有一个空窗口一闪而过。添加了waitkey后,哪怕仅仅是cv2.waitkey(1),我们也能截取到一帧的图像。所以cv2.imshow后边是必须要跟cv2.waitkey的。

给一段imshow源码里的注释来印证下:This function should be followed by cv::waitKey function which displays the image for specified . milliseconds. Otherwise, it won't display the image.

非官方翻译:这个函数之后应接cv2.waitKey函数来显示指定图像。否则,它不会显示图像。
为什么要这么麻烦的设计

来自官方的解释:This function is the only method in HighGUI that can fetch and handle events, so it needs to be .

非官方翻译:这个函数是HighGUI窗口中唯一的获取和处理事件的方法,因此它必须存在。
cv2.waitKey(1000) & 0xFF == ord(‘q’) 是什么意思

先解释下字面意思:

    cv2.waitKey(1000):在1000ms内根据键盘输入返回一个值
    0xFF ࿱

  • 3
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tp_0moyi0

新手入行,慢慢学习,慢慢积累

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值