OpenCV-图像、视频的加载与保存

图像的加载与保存

文件路径

参考链接:

OpenCV的坐标方向

  • 坐标原点在图像左上角
  • 行数rows其实对应于坐标轴上的y,即表示的是图像的高度竖直方向
  • 列数cols对应于坐标轴上的x,即表示的是图像的宽度水平方向

参考链接:

cv2.imread

读取一张图片

def imread(filename: Any,flags: Any = None) -> retval
  • flag = -1,8位深度,原通道
  • flag = 0,8位深度,1通道
  • flag = 1,8位深度,3通道
  • flag = 2,原深度, 1通道
  • flag = 3,原深度, 3通道
  • flag = 4,8位深度,3通道

cv2.imwrite

保存一张图片

imwrite(filename, img[, params]) -> retval

cv2.namedWindow

创建GUI

def namedWindow(winname: Any,flags: Any = None) -> None  

cv2.imshow

显示图片

def imshow(winname: Any,mat: Any) -> None 

cv2.waitkey

在一个给定的时间内(单位ms)等待用户按键触发,0表示无限制等待用户按键触发

waitKey([, delay]) -> retval

在cv2.imshow()之后要跟着一句cv2.waitkey()。

源码注释如下:
This function should be followed by cv::waitKey function which displays the image for specified . milliseconds. Otherwise, it won’t display the image.

This function is the only method in HighGUI that can fetch and handle events, so it needs to be .

这个函数是HighGUI窗口中唯一的获取和处理事件的方法,因此它必须存在。

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

尤其是在显示视频时,如果使用 waitKey(0) 则只会显示第一帧视频。

示例

src = cv.imread("C:/Users/22164/Desktop/zhou.jpg")
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
cv.namedWindow("import image", cv.WINDOW_AUTOSIZE)  # 创建GUI
cv.imshow("import image", src)
cv.waitKey()
cv.imwrite("C:/Users/22164/Desktop/zhouCopy.jpg", src)  # 保存到桌面
cv.imwrite("C:/Users/22164/Desktop/zhouCopyGray.jpg", gray)  # 保存灰度图到桌面
video_demo()
get_image_info(src)
cv.destroyAllWindows()

copy

复制一份图片

注意: 使用图像前可以复制一份

shape

返回图片的高,宽,通道数

  • image.shape[0], 图片垂直尺寸
  • image.shape[1], 图片水平尺寸
  • image.shape[2], 图片通道数

视频的读取与保存

cv2.VideoCapture

视频文件的读取

参数是0,表示打开笔记本的内置摄像头,参数是视频文件路径则打开视频

cv2.flip

图像翻转

flip(src, flipCode[, dst]) -> dst

示例

def video_demo():
    # capture = cv.VideoCapture(0)
    # 要用这个,之前那个有点报错。0是打开摄像头,也可以是输入视频文件的路径
    capture = cv2.VideoCapture(0, cv2.CAP_DSHOW)
    while 1:
        ret, frame = capture.read()
        frame = cv.flip(frame, 1)  # 图像翻转
        cv.imshow("video", frame)
        c = cv.waitKey(50)
        if c == 27:  # 表示键盘输入的是ESC
            break
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

咬着棒棒糖闯天下

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值