失败断言opencv mat.inl.hpp第930行

时间:2015-10-02 07:00:58

标签: opencv mat

我有一个小问题,但我不知道如何解决它。我只想做一个Mat的简单“foreach”来查看rgb值。我有下一个代码:

for(int i=0; i<mat.rows; i++)
{
    for(int j=0; j<mat.cols; j++)
    {
        int value_rgb = mat.at<uchar>(i,j);
        cout << "(" << i << "," << j << ") : " << value_rgb <<endl;
    }
}

垫子是200行×200列。当我在控制台上打印结果时,只是在最后程序失败并出现下一个错误:

**OpenCV Error: Assertion failed (dims <= 2 && data && (unsigned)i0 <(unsigned)size.p[0] && (unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channels()) && ((((sizeof(size_t)<<28)|0x8442211) >> ((DataType<_Tp>::depth) & ((1 << 3) - 1))*4) & 1 5) == elemSize1()) in unknown function, file c:\opencv\build\include\opencv2\core\mat.hpp, line 537**

任何人都可以帮助我吗? 感谢。

1 个答案:

答案 0 :(得分:0)

以下代码将帮助您访问rgb像素值。您必须访问三个通道才能查看RGB值。

getenv

从灰度图像中读取像素值

for(int i = 0; i < i<mat.rows; i++)
    {
        for(int j = 0; j < mat.cols; j++)
        {
            int b = mat.at<cv::Vec3b>(i,j)[0];
            int g = mat.at<cv::Vec3b>(i,j)[1];
            int r = mat.at<cv::Vec3b>(i,j)[2];
            cout << r << " " << g << " " << b << value_rgb <<endl ;
        }
    }

<强>更新 此代码从图像中读取所有灰度值,并导致频繁出现的值(值发生的次数)。即

像素值&#39; 0&#39;如图所示,

像素值&#39; 1&#39;看来,...&amp;所以一直到256岁。

#include <opencv\cv.h>
#include <highgui\highgui.hpp>
using namespace std;
using namespace cv;
    int main()
{
cv::Mat img = cv::imread("5.jpg",0);

for(int j=0;j<img.rows;j++) 
{
  for (int i=0;i<img.cols;i++)
  {
    int a;
    a=img.at<uchar>(j,i);
     cout<<a<<endl; 
  }
}

cv::imshow("After",img);
waitKey(0);
}