第二章:视频图片的操作【图像处理py版本】

二、读取保存图片以及视频。

2.1 读取一张图片

  • 1 .代码以及讲解
# date:2021/11/29
# author:冯耿鑫


# 导入库,后面其实就是调用这个库里面的函数
import cv2 as cv


# 读取图片的几种方法(其中\\可以用/代替,效果一样的,个人比较喜欢用相对路径以及\\进行读取图片)
# 相对路径赌气图片,其中.\\1.jpg为当前目录下的一张命名为1.jpg的图片
# img = cv.imread(".\\1.jpg")
# 绝对路径读取图片
img = cv.imread("F:\\code\\anaconda_environment\\CSDN\\img_video\\1.jpg")


# 创建一个窗口名为img的窗口,0或者cv.WINDOW_NORMAL表示可以缩放窗口大小
cv.namedWindow("img",0)
# 显示图片,创建的窗口名要跟图片窗口名字一样。
cv.imshow("img",img)

# 参数0表示程序停止在改行代码上,如果是n,就是延迟n ms之后执行下一条指令
cv.waitKey(0)
# 读取图片后并关闭之后要释放内存
cv.destroyAllWindows()
  • 2.读取效果

图2.1.1 读取图片

2.2 numpy创建图片

2.3 批量读取图片

  • 1.批量操作介绍:
      这里先提前简单说一下批量读取图片,大家可以代码进行简单修改读取文件或者其他格式的图片(.bmp,.jpeg等等)。后期我就会在新的章节中对批量操作进行新的介绍。
     在深度学习当中,一般都需要根据应用场景去制作数据集,需要用到很多图片的批量命名,数据增强,将标注好的数据集扩展更多的数量,这种情况就需要用到批量读取图片。同样批量读取也能应用在办公自动化上,对excel文件进行批量操作,提高工作效率。
     下面代码的功能就是一次性读取指定文件下面的所有.jpg,.png格式的图片。
  • 2.代码展示
# date:2021//11/30
# author:仲恺农业工程学院 冯耿鑫



import cv2 as cv
import os


path = ".\\img"

for filename in os.listdir(path):
    # 读取改文件下的所有文件以及文件夹

    if any(filename.endswith(extension) for extension in ['.jpg', '.png']) == True:
        # 文件的扩展名是否在列表里面,列表的格式是我们需要的格式,如果是就进行读取。

        # 读取所需要格式的图片
        img = cv.imread(path+"\\"+filename)
        # 打印图片读取路径
        print(path+"\\"+filename)


        # 创建窗口,窗口名大家全部设置为"img",因为路径不一样,文件里面刚好有6张图片,到时候都会显示出来。
        cv.namedWindow(path + "\\" + filename, 0)
        cv.imshow(path+"\\"+filename,img)

        # 延时显示
        cv.waitKey(1000)
        # 释放窗口之后就不会生产6张图片,而是显示一张释放一张。
        # cv.destroyAllWindows()

# 为了所有图片显示后不退出,将程序停止在这一行
cv.waitKey(0)








  • 3.效果图片
图2.2.1 文件夹内容
图2.2.2 代码运行效果

2.4 读取视频

  • 2.4.1 下面展示一些 打开相机代码
import cv2 as cv    # 导入cv2库,为了后面敲代码方便,简称为cv



def openCamera():
    """定义一个函数,用来打开相机"""


    cap = cv.VideoCapture(0)    # 创建一个对象,参数0为打开外部相机,1是电脑自带相机,大家可以0/1切换试试
    while (cap.isOpened()):

        ret,frame = cap.read()      # ret:布尔值,False为关闭相机、True为关闭相机

        #===========下面可以利用获取的图片进行图像处理===============
        frame = cv.flip(frame,1)
        """
        horizontal = cv.flip(img,1,dst=None) #水平镜像
        vertical = cv.flip(img,0,dst=None) #垂直镜像
        cross = cv.flip(img,-1,dst=None) #对角镜像
        """




        cv.namedWindow("frame",0)   # 定义一个窗口,0或cv.WINDOW_NORMAL为可以鼠标自动缩放窗口大小
        cv.imshow("frame",frame)    # 显示图片,注意窗口名以及图片显示名要一样,不然就是两个弹窗。同时不能缩放

        if cv.waitKey(1)& 0xFF == 27:
            # 每一帧延迟1ms,27表示esc键,检测到esc时可以关闭窗口,除来27也可以设置 : ord('')   单引号其他字母参数,如:cv2.waitKey(1) & 0xFF == ord('q'):
            break

    cap.release()       # 退出之后释放内存

if __name__ == '__main__':
    # 只有运行当前程序的时候才会调用以下函数
    openCamera()






  • 2.3.2 下面展示一些 效果
    在这里插入图片描述

2.5 保存视频

2.6 利用键盘建,保存一段视频的某几段小视频

2.7 图片转换为视频

2.7.1 文件图片转换为视频

2.7.2 代码生成图片转换为视频

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值