下面的代码应该捕获视频并保存它。
import cv2
import numpy as np
from skimage.filters import gaussian
capture = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('My video.avi', fourcc, 10, (640,480))
while capture.isOpened:
ret, frame = capture.read()
if ret==True:
frame = gaussian(frame, sigma=5, multichannel=True)
out.write(frame)
cv2.imshow('My video', frame)
if cv2.waitKey(1) == 27:
break
capture.release()
out.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
error: OpenCV(3.4.3) D:\Build\OpenCV\opencv-3.4.3\modules\videoio\src\cap_ffmpeg.cpp:296: error: (-215:Assertion failed) image.depth() == CV_8U in function 'cv::`anonymous-namespace'::CvVideoWriter_FFMPEG_proxy::write'
如果我删除高斯模糊,代码就可以工作。怎么了?
我从示波器读取波形。波形根据时间分为 10 段。我想绘制完整的波形,一个段在另一个段之上(或之下),可以这么说,“具有垂直偏移”。此外,还需要彩色图来显示信号强度。我只能得到以下情节:
正如您所看到的,所有曲线都是叠加的,这是不可接受的。人们可以向 y 数据添加偏移量,但这不是我想要的方式。当然有一种更简洁的方法来绘制我的数据吗?我已经尝试了一些方法来使用 pylab 解决这个问题,但我什至不确定如何继续以及这是否是正确的方法。
任何帮助将不胜感激。
import readTrc #helps read binary data from an oscilloscope
import matplotlib.pyplot as plt
fName = r"...trc"
datX, datY, m = readTrc.readTrc(fName)
segments = m['SUBARRAY_COUNT'] #number of segments
x, y = [], []
for i in range(segments+1):
x.append(datX[segments*i:segments*(i+1)])
y.append(datY[segments*i:segments*(i+1)])
plt.plot(x,y)
plt.show()
Run Code Online (Sandbox Code Playgroud)