2014-10-01 124 views
0

嗨,我想繪製一個攝像頭飼料一些透明的形狀。打開CV addWeighted錯誤

我遇到錯誤輸入參數的大小不匹配。我檢查我的代碼並且無法識別故障

double alpha = 0.8; 
    Mat polarize(480, 640, CV_8UC4); 

    Size s = webcam.size(); 
    double rows = s.height; 
    double cols = s.width; 
    std::cout << "Webcam R " << rows << " C " << cols << std::endl; 

    s = shape.size(); 
    rows = s.height; 
    cols = s.width; 

    std::cout << "Shape R " << rows << " C " << cols << std::endl; 


    addWeighted(shape, alpha, webcam, 1.0 - alpha, 0.0, polarize); // Error Here 

我已檢查Mat形狀和Mat網絡攝像頭是同一行和列。有什麼我錯過了嗎?

+0

Mat polarize(webcam.size(),webcam.type()); // not CV_8UC4 – berak 2014-10-01 08:28:31

+0

@berak嗨,我已經嘗試了建議,但錯誤仍然存​​在 – sean 2014-10-01 08:56:39

回答

0

我假設網絡攝像頭是從cv::VideoCapture對象複製的,應該是3通道矩陣。因爲Mat polarize(480, 640, CV_8UC3);應該工作。

1

您檢查了「形狀」和「網絡攝像頭」的寬度和高度,但沒有檢查它們的類型。如果不相同(通道的深度和數量),則該功能將失敗。

另外,不需要初始化「極化」。它將根據輸入圖像的寬度,高度和類型由addWeighted()創建。