前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenCV3计算机视觉——处理文件、摄像头

OpenCV3计算机视觉——处理文件、摄像头

原创
作者头像
用户7180691
修改2020-04-10 10:13:16
6370
修改2020-04-10 10:13:16
举报

img=np.zeros((3,3),dtype=np.uint8)

# print(img.shape)

img=cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)

print(img.shape)

import cv2

import numpy as np

import os

randomByteArray=bytearray(os.urandom(120))

print(randomByteArray)

flatNumpyArray=np.array(randomByteArray)

print(flatNumpyArray)

grayImage=flatNumpyArray.reshape(300,400)

cv2.imwrite('RandomGray.png',grayImage)

bgrImage=flatNumpyArray.reshape(100,400,3)

cv2.imwrite('RandomColor.png',bgrImage)

import cv2

import numpy as np

img=cv2.imread('cat.jpg')

img[0,0]=[255,255,255]

cv2.imshow('img',img)

cv2.waitKey(0)

cv2.destroyAllWindows()

print(img.item(150,120,0))

img.itemset((150,120,0),255)

print(img.item(150,120,0))

img[:,:,2]=-2

cv2.imshow('img',img)

cv2.waitKey(0)

cv2.destroyAllWindows()

my_roi=img[0:100,0:100]

img[300:400,300:400]=my_roi

cv2.imshow('img',img)

cv2.waitKey(0)

cv2.destroyAllWindows()

print(img.shape)

print(img.size)

print(img.dtype)

import cv2

videoCapture=cv2.VideoCapture('test.avi')

#得到视频的帧率

fps=videoCapture.get(cv2.CAP_PROP_FPS)

#得到视频的宽和高

size=(int(videoCapture.get(cv2.CAP_PROP_FRAME_WIDTH)),int(videoCapture.get(cv2.CAP_PROP_FRAME_HEIGHT)))

#创建视频流写入对象,VideoWriter_fourcc为视频编解码器,fps为帧播放速率,size为视频帧大小

videoWiter=cv2.VideoWriter('MyOutputVid.avi',cv2.VideoWriter_fourcc('I','4','2','0'),fps,size)

#fourcc意为四字符代码(Four-Character Codes),顾名思义,该编码由四个字符组成,下面是VideoWriter_fourcc对象一些常用的参数,注意:字符顺序不能弄混

#cv2.VideoWriter_fourcc('I', '4', '2', '0'),该参数是YUV编码类型,文件名后缀为.avi

#cv2.VideoWriter_fourcc('P', 'I', 'M', 'I'),该参数是MPEG-1编码类型,文件名后缀为.avi

#cv2.VideoWriter_fourcc('X', 'V', 'I', 'D'),该参数是MPEG-4编码类型,文件名后缀为.avi

#cv2.VideoWriter_fourcc('T', 'H', 'E', 'O'),该参数是Ogg Vorbis,文件名后缀为.ogv

#cv2.VideoWriter_fourcc('F', 'L', 'V', '1'),该参数是Flash视频,文件名后缀为.flv

success,frame=videoCapture.read()

while success:

videoWiter.write(frame)

success,frame=videoCapture.read()

#以上是书上的代码

cv2.imshow('capture', frame)

#等候50ms,播放下一帧,或者按q键退出

if cv2.waitKey(50) &0xFF ==ord('q'):

break

#释放视频流

videoCapture.release()

#关闭所有窗口

cv2.destroyAllWindows()

import cv2

cameraCapture=cv2.VideoCapture(0)

#设置视频的帧率,网上在线的视频一般都是30帧,所以设置fps为30

fps=30 #an assumption

#得到视频的宽和高

size=(int(cameraCapture.get(cv2.CAP_PROP_FRAME_WIDTH)),int(cameraCapture.get(cv2.CAP_PROP_FRAME_HEIGHT)))

#创建视频流写入对象,VideoWriter_fourcc为视频编解码器,fps为帧播放速率,size为视频帧大小

videoWiter=cv2.VideoWriter('MyOutputVid.avi',cv2.VideoWriter_fourcc('I','4','2','0'),fps,size)

success,frame=cameraCapture.read()

#该程序是摄像头捕获的10秒的视频,所以帧数为10*fps-1

numFrameRemaining=10*fps-1

while success and numFrameRemaining>0:

videoWiter.write(frame)

success,frame=cameraCapture.read()

numFrameRemaining-=1

cameraCapture.release()

学习过程中有疑问但已解决的问题:

帧率:每秒显示帧数(Frames per Second,简:FPS)或“赫兹”(Hz)。

疑问:

这两个语句到底有什么区别?搞不懂
这两个语句到底有什么区别?搞不懂

解决啦!第一句就是在while前调用一下,以便读取第一帧,判断视频是否读取成功,后面是在while循环里不断的读取后续的帧,相当于读一帧写一帧。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com