2017-01-11 23 views
1

這是到目前爲止我的代碼,但我得到像OpenCV Error: One of arguments' values is out of range (index is out of range) in cvPtr2D, file ..\..\..\..\opencv\modules\core\src\array.cpp, line 1797 Exception in thread "main" java.lang.RuntimeException: ..\..\..\..\opencv\modules\core\src\array.cpp:1797: error: (-211) index is out of range in function cvPtr2D<JAVA>如何採取全屏幕的RGB像素值的OpenCV

關於如何解決此問題的任何建議的錯誤?任何幫助表示讚賞;)

cvNamedWindow("OpenCV", 0); 
    while(true) 
    { 
     IplImage img = cvQueryFrame(cvCreateCameraCapture(0)); 
     CvScalar[] s = new CvScalar[img.height()*img.width()+2]; 
     for(int i = 0;i<=img.width();i++) 
     { 
      for(int j = 0;j<=img.height();j++) 
      { 
       s[j] = cvGet2D(img, i, j); 
      } 
     } 
     cvShowImage("OpenCV", img); 
     cvWaitKey(33); 
    } 

回答

0

cvGet2D()預計行前列。索引是基於0的,所以你的循環剛剛出界。並且s應該可能是一個二維數組,因此您不會覆蓋您的數據。試試這個:

CvScalar[][] s = new CvScalar[img.height()][img.width()]; 
for (int i = 0; i < img.height(); i++) { 
    for (int j = 0; j < img.width(); j++) { 
     s[i][j] = cvGet2D(img, i, j); 
    } 
} 
+0

它的工作原理,但我的應用程序運行速度比平時慢。有什麼辦法可以提高我的應用程序的速度嗎? – kimchiboy03

+0

這是一個完全獨立的問題,如果我可以說,這是一個非常廣泛的問題。當您可以通過特定代碼將其縮小到特定問題時,將其作爲新問題發佈。 – shmosel

+0

謝謝@shmosel =) – kimchiboy03