(一)对视频(图片)的读入及分帧

视频(图片)的读入—分帧—预处理Opencv

一、对图片的读取操作

通过cv2.imread()对图片进行读取,创建图片窗口,然后关闭。
(一)对视频(图片)的读入及分帧_第1张图片

1.	import cv2    
2.	#读取图片文件的位置
3.	image = cv2.imread('.\\Python baby.jpg')  
4.	#创建一个新的窗口 
5.	cv2.namedWindow("Image")   
6.	cv2.imshow("Image", image) 
7.	  
8.	cv2.waitKey(0)   
9.	cv2.destroyAllWindows() 	

二、对视频的读取及分帧操作

Opencv对视频文件的操作,可以通过cv2.VideoCapture(‘文件路径’)来读取,通过如果cv2.VideoCapture(0)则为通过摄像头进行采集。通过cap.read()函数将视频进行实时分帧处理,返回ret布尔值,反馈视频是否读到结尾,如果不是结尾且正确则返回True,如果已经读取到结尾返回False;
(一)对视频(图片)的读入及分帧_第2张图片

1.	import cv2 
2.	#从指定路径读取视频,如果cv2.VideoCapture(0),从摄像头上读取  
3.	cap = cv2.VideoCapture('.\\input-video_3.mp4')  
4.	  
5.	ret = True    
6.	  
7.	#while(cap.isOpened()):    
8.	while(ret):    
9.	    #按帧读取视频,  
10.	    #返回ret布尔值,如果正确则返回True。  
11.	    # 如果读取到文件末尾,则返回False。  
12.	    # frame是每一帧的图像,是三维矩阵。  
13.	    ret,frame = cap.read()  
14.	    #播放视频  
15.	    if ret == True:  
16.	        #视频播放窗口的名称和当前帧  
17.	        cv2.imshow('image', frame)   
18.	    #每一帧的播放时间,毫秒,可根据显示速率调整  
19.	    k = cv2.waitKey(20)    
20.	    #中途停止按q键退出,播放完成任意键  
21.	    if (k & 0xff == ord('q')):    
22.	        cap.release()    
23.	        cv2.destroyAllWindows()  
24.	        break    
25.	#释放和销毁窗口  
26.	cap.release()    
27.	cv2.waitKey(0)  
28.	cv2.destroyAllWindows()

三、通过os对视频进行读取和分帧处理

如果有外部参数,则将未处理的视频的图像的路径通过sys.argv传递进来;如果没有则使用自定义的"freeway_clip.mp4"文件,使用VideoFileClip()函数将输入的视频文件进行切片分帧处理,将切出来的帧传给clip参数,进过process_an_image函数处理结束后,使用write_videofile对视频输出文件进行每帧的叠加处理。

# 图像视频流处理
if len(sys.argv) > 1:
  video_path = sys.argv[1]
  video_name = os.path.split(video_path)[1]
else:
  #video_path = os.path.join('.\input_video','video_2.mp4')
  video_path = "freeway_clip.mp4"
  video_name = 'freeway_clip.mp4'
  print('1')
try:
  output = os.path.join('output_video','output_'+video_name)
  #将输入视频切成帧
  clip = VideoFileClip(video_path)
  print('2')
  #帧的输出结果
  out_clip = clip.fl_image(process_an_image)
  print('3')
  #将输出帧进行叠加
  out_clip.write_videofile(output, audio=False)
except:
  print('can not detect lane!')

你可能感兴趣的:(Opencv车道线检测)