2017-01-11 19 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