栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

OpenCV - 1 图片读取、生成简单图像、视频读取

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

OpenCV - 1 图片读取、生成简单图像、视频读取

 读取、显示、保存:
import cv2
a = cv2.imread('E:/picture/lena.jpg',0) #0为灰色,1为彩色,-1包含透明通道的彩色图
cv2.imshow('lena',a)  #此处必须有个命名,可以为空 eg:cv2.imshow('',a)
cv2.waitKey(0) #暂停多少毫秒,0表示一直暂停
cv2.imwrite('C:/Users/10611/Desktop/lena.jpg',a) #将a输出到桌面上
生成图像输出
import cv2
import numpy as np
width = 256
height = 256
img = np.zeros([width, height, 3], dtype=np.uint8)
for i in range(width):
    for j in range(height):
        for k in range(3):
            img[i,j,k]=i
cv2.imshow('A',img)
cv2.waitKey(0)

如果控制RGB三通道的值是一样的,输出出来的图像就是全黑的,因为同等的红绿蓝加起来是黑色。

打开摄像头: 实时显示摄像头
# 打开摄像头并灰度化显示
import cv2
capture = cv2.VideoCapture(0) 
while(True):
    ret, frame = capture.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)    # 将这帧转换为灰度图
    cv2.imshow('frame', gray)
    if cv2.waitKey(1) == ord('q'):
        break

整体理解为:通过read读取一帧,show来显示当前帧,waitKey(1)将确保在每毫秒的间隔后生成一个新帧,通过while来进行遍历。如果我们将waitkey里面的参数改成500,即500ms刷新一次,就会发现视频帧率变低了。

1、cv2.VideoCapture()函数:
cap = cv2.VideoCapture(0)
VideoCapture()中参数是0,表示打开笔记本的内置摄像头。
cap = cv2.VideoCapture("…/1.avi")
VideoCapture("…/1.avi"),表示参数是视频文件路径则打开视频。

2、cap.isOpened()函数:
返回true表示成功,false表示不成功

3、ret,frame = cap.read()函数:
cap.read()按帧读取视频,ret,frame是获cap.read()方法的两个返回值。其中ret是布尔值,如果读取帧是正确的则返回True,如果文件读取到结尾,它的返回值就为False。frame就是每一帧的图像,是个三维矩阵(即RGB)。
所以把代码改成这样就是彩色图像:

import cv2
capture = cv2.VideoCapture(0) 
while(True):
    ret, frame = capture.read()
    cv2.imshow('frame', frame)
    if cv2.waitKey(1) == ord('q'):
        break

4、cv2.cvtColor()用来转换颜色,这里将彩色图转成灰度图。

5、关于cv2.waitkey()的理解:

播放本地视频
# 播放本地视频
capture = cv2.VideoCapture('demo_video.mp4')
while(capture.isOpened()):
    ret, frame = capture.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) #灰度显示
    cv2.imshow('frame', gray)
    if cv2.waitKey(30) == ord('q'):
        break

录制视频
import cv2
cap=cv2.VideoCapture(0)
fourcc=cv2.VideoWriter_fourcc(*'MJPG')
outfile=cv2.VideoWriter('output.avi',fourcc,25.,(640,480))

while(cap.isOpened()):
    ret,frame=cap.read()
    if ret: #如果成功捕获一帧
        outfile.write(frame) #输出这一帧
        cv2.imshow('frame',frame) #展示当前帧
        if cv2.waitKey(1)==ord('q'): #控制帧率和是否结束
            break
    else: #如果没有成功捕获则退出
        break

1、cv2.VideoWriter_fourcc():表示编码方式,有DIVX , XVID , MJPG , X264 , WMV1 , WMV2等等(XVID是最好的,MJPG是高尺寸视频,X264得到小尺寸视频)

2、cv2.VideoWriter():有四个参数:

        输出的文件名,如'output.avi'
        编码方式FourCC码(1里面定义的)
        帧率FPS
        要保存的分辨率大小

3、 outfile.write():通过此方法输出获取的当前帧

参考:

python中VideoCapture(),read(),waitKey()的使用_hanshanbuleng的博客-CSDN博客

CodecWang's Blog

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/303235.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号