2015-06-01 80 views
1

我想創建一個程序,它會顯示我捕捉的視頻的不同類型的漸變。這是我的代碼:使用matplotlib攝像頭的Opencv

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() 

但是,我收到一個錯誤,指出圖像數據不能轉換爲浮點數。

這個程序的工作原理是我只用一張圖片取代視頻捕捉,並直接輸入laplacian,sobelx和sobely轉換。

難道我不確定視頻的matplot嗎?

+0

適用於我。什麼是img的dtype? –

回答

1

我與你的代碼相同的問題,後來我改變:

cap = cv2.VideoCapture() 

到:

cap = cv2.VideoCapture(0) 

和它的工作

這是因爲VideoCapture需要知道什麼視頻設備在您的計算機上使用,如果您使用網絡攝像頭,則必須將0作爲參數傳遞給功能