python 2.7 - Opencv使用相机与matplotlib



我正在尝试创建一个程序,将向我展示我正在捕获的视频的不同类型的梯度。这是我的代码:

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作为参数传递给函数

相关内容

  • 没有找到相关文章

最新更新