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 删除。