Java <;爪哇>;如何在OpenCV中获取整个屏幕的RGB像素值

Java <;爪哇>;如何在OpenCV中获取整个屏幕的RGB像素值,java,opencv,computer-vision,pixel,javacv,Java,Opencv,Computer Vision,Pixel,Javacv,这是到目前为止我的代码,但我得到了类似于OpenCV错误的错误:cvPtr2D文件中的一个参数值超出范围(索引超出范围),文件..\\\..\OpenCV\modules\core\src\array.cpp,第1797行 线程“main”java.lang.RuntimeException中的异常:..\..\..\..\opencv\modules\core\src\array.cpp:1797:错误:(-211)索引超出函数cvPtr2D的范围 有没有关于如何解决这个问题的建议?感谢您的帮

这是到目前为止我的代码,但我得到了类似于
OpenCV错误的错误:cvPtr2D文件中的一个参数值超出范围(索引超出范围),文件..\\\..\OpenCV\modules\core\src\array.cpp,第1797行
线程“main”java.lang.RuntimeException中的异常:..\..\..\..\opencv\modules\core\src\array.cpp:1797:错误:(-211)索引超出函数cvPtr2D的范围

有没有关于如何解决这个问题的建议?感谢您的帮助;)

cvNamedWindow(“OpenCV”,0);
while(true)
{
IplImage img=cvQueryFrame(cvCreateCameraCapture(0));
CvScalar[]s=新的CvScalar[img.height()*img.width()+2];
for(int i=0;i
cvGet2D()
要求行在列之前。并且索引是基于0的,因此循环超出了范围。并且
s
可能是一个2D数组,因此您不会一直覆盖数据。请尝试以下操作:

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);
    }
}
CvScalar[][]s=新的CvScalar[img.height()][img.width()];
对于(int i=0;i
它可以工作,但我的应用程序运行速度比平时慢了一点。有什么办法可以提高我的应用程序的速度吗?这是一个完全不同的问题,如果可以的话,也是一个非常广泛的问题。当你可以用一段特定的代码将其缩小到特定的问题时,请将其作为一个新问题发布。谢谢@shmosel=)
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);
    }
}