因为在网上找了段写入视频的代码,发现最后视频文件大概只有 6KB 左右。到网上搜了下,结果是输入视频帧的高度和宽度没有设置好。

下面代码是我随便整合的,能不能跑我不知道。关键部分就是
cv2.VideoWriter('output.avi',fourcc, 20.0, (fwidth,fheight)) 中的 fwidth 和 fheight 要和你原始视频的帧宽度和帧高度一致
在这里插入图片描述

import numpy as np
import cv2
(grabbed, frame) = camera.read()
fshape = frame.shape
fheight = fshape[0]
fwidth = fshape[1]
print fwidth , fheight
# Define the codec and create VideoWriter object
fourcc = cv2.VideoWriter_fourcc(*'XVID')
# ------------------------------------------------------------------
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (fwidth,fheight)) # 这里的 fwidth 和 fheight 要和你原始视频的一致。
# ------------------------------------------------------------------
cap = cv2.VideoCapture(0)
while(cap.isOpened()):
    ret, frame = cap.read()
    if ret==True:
        frame = cv2.flip(frame,0)
        # write the flipped frame
        out.write(frame)
        cv2.imshow('frame',frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    else:
        break
# Release everything if job is finished
cap.release()
out.release()
cv2.destroyAllWindows()

以上代码参考 https://stackoverflow.com/questions/29317262/opencv-video-saving-in-python#

下面这段代码来自 https://www.learnopencv.com/read-write-and-display-a-video-using-opencv-cpp-python/,感觉写的很好,大家可以学习下:

import cv2
import numpy as np
# Create a VideoCapture object
cap = cv2.VideoCapture(0)
# Check if camera opened successfully
if (cap.isOpened() == False): 
  print("Unable to read camera feed")
# Default resolutions of the frame are obtained.The default resolutions are system dependent.
# We convert the resolutions from float to integer.
frame_width = int(cap.get(3))
frame_height = int(cap.get(4))
# Define the codec and create VideoWriter object.The output is stored in 'outpy.avi' file.
out = cv2.VideoWriter('outpy.avi',cv2.VideoWriter_fourcc('M','J','P','G'), 10, (frame_width,frame_height))
while(True):
  ret, frame = cap.read()
  if ret == True: 
    # Write the frame into the file 'output.avi'
    out.write(frame)
    # Display the resulting frame    
    cv2.imshow('frame',frame)
    # Press Q on keyboard to stop recording
    if cv2.waitKey(1) & 0xFF == ord('q'):
      break
  # Break the loop
  else:
    break  
# When everything done, release the video capture and video write objects
cap.release()
out.release()
# Closes all the frames
cv2.destroyAllWindows() 
                    因为在网上找了段写入视频的代码,发现最后视频文件大概只有 6KB 左右。到网上搜了下,结果是输入视频帧的高度和宽度没有设置好。下面代码是我随便整合的,能不能跑我不知道。关键部分就是cv2.VideoWriter('output.avi',fourcc, 20.0, (fwidth,fheight)) 中的 fwidth 和 fheight 要和你原始视频的帧宽度和帧高度一致import n...
				
今天的博客是直接来源于我自己的个人工具函数库。 过去几个月,有些PyImageSearch读者电邮问我:“如何获取URL指向的图片并将其转换成OpenCV格式(不用将其写入磁盘再读回)”。这篇文章我将展示一下怎么实现这个功能。 额外的,我们也会看到如何利用scikit-image从URL下载一幅图像。当然前行之路也会有一个常见的错误,它可能让你跌个跟头。 继续往下阅读,学习如何利用利用PythonOpenCV将URL转换为图像 方法1:OpenCV、NumPy、urllib 第一个方法:我们使用OpenCV、NumPy、urllib库从URL获取图像,并将其转换为图像。打开并新建一个文件,
这段代码是一个屏幕录制器,它使用了OpenCV和pyautogui库。它首先定义了一个VideoWriter对象,用于将帧写入视频文件。然后,它使用pyautogui库获取屏幕截图,并将其转换为numpy数组。接下来,它将颜色空间从BGR转换为RGB,并将帧写入视频文件。最后,它使用cv2.imshow()函数显示帧,并检查是否按下了停止录制键。如果按下了停止录制键,则程序将停止录制并释放所有资源。 使用方法:要使用这段代码,您需要安装OpenCV和pyautogui库。您可以使用pip install opencv-python和pip install pyautogui命令来安装这些库。然后,您可以将代码复制到您的Python文件中,并运行它。它将在您的桌面上创建一个名为“YYYY-MM-DD HH-MM-SS.avi”的视频文件,其中YYYY-MM-DD HH-MM-SS是当前日期和时间。要停止录制,请按下“q”键。
save_path = "test.mp4" fourcc = 'MJPG' # output video codec fps = vid_cap.get(cv2.CAP_PROP_FPS) w = int(vid_cap.get(cv2.CAP_PROP_FRAME_WIDTH)) h = int(vid_cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
问题:不能读取视频文件 解决方法:下载解码软件,我下载了对应的ffdshow,解决问题。 http://sourceforge.jp/projects/ffdshow-tryout/ (注意版本,下载后安装即可,会自动开启)
本系统要实现基于人脸识别的考勤打卡所以使用Python下的Opencv,Flask以及Mysql数据库来实现考勤系统人脸识别验证的功能。首先对Opencv下的LPBH,Eigenfaces和Fisherfaces三种人脸识别算法分别进行模型训练和测试,选用测试结果最好的LBPH算法来实现本系统的人脸识别功能。再使用Flask框架进行系统的web端的搭建,最后使用Mysql进行数据库建设,从而实现完整的人脸识别考勤系统。 使用说明:阅读Readme文档,安装好requirement.txt里面的环境即可使用。 毕设推荐使用!!!
最近项目中需要实现两组图片对比,并能将两者的区别标识出来。 在网上搜索一大堆找到一篇大神的文章,最终实现该功能,在这里记录下: 想要实现此demo,首先我们得确保电脑上已安装 openCVPython 两个工具以及scikit-image和imutils两个库: 安装方法,在这里不多说,我安装的是Python3.6 和openCV2,安装方法网上自行百度谷歌; 进入正题: 新建一个新的Python文件并命名为copmarePicture.py,写入下面的代码: from skimage.measure import compare_ssim #~ import skimage as s
使用python实现代码动画视频 最近在CSDN上面看到一个将视频转换为由代码组成的视频,所以想自己写一个。参考的原文博客为:https://blog.csdn.net/hhladminhhl/article/details/118463344 功能:使用python实现将动画转换为有字符组成的视频。 实现方法分为如下几步: 1、将视频从网站上面下载下来 2、将视频截取为GIF,把截取的GIF进行ASCII字符转换 3、将转换好的字符gif根据每一帧的顺序进行重命名,然后排序 4、将排序后的每一帧gi
文章目录前言安装一个小例子最后 之前制作视频一般都是pr或者是在线制作视频,然后昨天偶然看到了一个python的库—moviepy,现在我们可以写代码来制作视频了。 这个库安装起来很简单,还是老样子pip install moviepy 不过使用windows的话还需要安装ImageMagick,不然视频制作会报错。 安装ImageMagick的博客 安装好之后就可以慢慢探索这个库的使用了,基本上所有的视频剪辑操作都有相关的函数,我也发现了不少比较好的博客可以用来学习 moviepy的基本使用
起因是我需要将flv格式的文件转换为mp4 但是找到的视频转换软件都不好使,最后采用的是在anaconda的python中利用ffmpy和FFmpeg进行转换 1. 打开anaconda的命令提示符 依次执行命令 conda install ffmpeg pip install ffmpy 2. 解决报错:RemoveError: ‘requests’ is a dependency of conda and cannot be removed from conda’s operating enviro
sphereWrite.open("/Users/hfy/Insta360/video/flipVideo/result/FA_render.mp4", cv::VideoWriter::fourcc('D', 'I', 'V', 'X'), outputExporterInfo->fps, cv::Size(outputExporterInfo->width, outputExporterInfo->height)); 将第二个参数改成cv::VideoWri.
你可以使用OpenCV中的VideoWriter对象来进行视频的压缩。该对象可以接受多个参数,包括视频编解码器和压缩参数。 下面的示例代码演示了如何使用VideoWriter对象将视频压缩为H.264格式: ```python import cv2 # 读取原始视频 cap = cv2.VideoCapture('input_video.mp4') # 获取视频的帧率和分辨率 fps = cap.get(cv2.CAP_PROP_FPS) width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 创建VideoWriter对象并设置编解码器和压缩参数 fourcc = cv2.VideoWriter_fourcc(*'H264') out = cv2.VideoWriter('output_video.mp4', fourcc, fps, (width, height), True) # 读取视频帧并进行压缩 while True: ret, frame = cap.read() if not ret: break # 对视频帧进行压缩 compressed_frame = cv2.resize(frame, (0,0), fx=0.5, fy=0.5, interpolation=cv2.INTER_AREA) # 写入压缩后的视频帧 out.write(compressed_frame) # 释放资源 cap.release() out.release() 上面的代码中,我们首先从原始视频中获取帧率和分辨率,并创建一个VideoWriter对象。然后,我们使用cv2.resize函数对每个视频帧进行压缩,并将压缩后的视频写入输出视频中。最后,我们释放所有资源。 在上面的示例中,我们使用cv2.resize函数对视频帧进行压缩。你可以根据需要调整压缩参数和压缩方法,以获得更好的压缩效果。