1
我想從兩個或更多的MSFT LifeCam HD-3000s使用videoInput庫,OpenCV 2.4.3和VS2010 Express捕獲視頻到Mat類型。OpenCV 2.4.3和視頻輸入到墊子
我跟着例子:Most efficient way to capture and send images from a webcam in a network,它運作良好。
現在我想用C++ Mat類型替換IplImage類型。我試圖按照這個例子:下面opencv create mat from camera data
這給了我:
VI = new videoInput;
int CurrentCam = 0;
VI->setupDevice(CurrentCam,WIDTH,HEIGHT);
int width = VI->getWidth(CurrentCam);
int height = VI->getHeight(CurrentCam);
unsigned char* yourBuffer = new unsigned char[VI->getSize(CurrentCam)];
cvNamedWindow("test",1);
while(1)
{
VI->getPixels(CurrentCam, yourBuffer, false, true);
cv::Mat image(width, height, CV_8UC3, yourBuffer, Mat::AUTO_STEP);
imshow("test", image);
if(cvWaitKey(15)==27) break;
}
輸出是線形圖像(即,它看起來像第一行是正確的,但第二行似乎關閉,第三次正確,第四次等)。這表明步驟部分是錯誤的,或者IplImage類型和Mat類型之間存在一些不同。我試圖查看/更改所有參數,但我找不到任何東西。
希望這個答案能夠幫助那些面對將視頻輸入庫中的圖像加載到Mat類型時出現相當普遍的問題的人。
在此先感謝!
非常感謝!它現在工作完美。第二個示例使用寬度 - 高度順序,但使用構造函數的Size結構。這扔我在這裏。 – user1805103
行cols的方式混淆了那些用於寬高的人。 – luhb