我正在尝试创建一个程序,将向我展示我正在捕获的视频的不同类型的梯度。这是我的代码:
import cv2
import numpy as np
from matplotlib import pyplot as plt
cap = cv2.VideoCapture()
while(1):
bleh, img = cap.read()
laplacian = cv2.Laplacian(img,cv2.CV_64F)
sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=5)
sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=5)
plt.subplot(2,2,1),plt.imshow(img,cmap = 'gray')
plt.title('Original'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,2),plt.imshow(laplacian,cmap = 'gray')
plt.title('Laplacian'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,3),plt.imshow(sobelx,cmap = 'gray')
plt.title('Sobel X'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,4),plt.imshow(sobely,cmap = 'gray')
plt.title('Sobel Y'), plt.xticks([]), plt.yticks([])
plt.show()
然而,我得到一个错误,说明图像数据不能转换为浮动。
当我将视频捕获替换为图像并将其直接输入拉普拉斯变换,sobelx变换和sobelx变换时,该程序可以工作。
我可以不确定matplot视频吗?
我有同样的问题与你的代码,然后我改变:
cap = cv2.VideoCapture()
:
cap = cv2.VideoCapture(0)
和它工作
这是因为videoccapture需要知道在你的电脑上使用什么视频设备,如果你使用的是网络摄像头,那么你必须将0作为参数传递给函数