簡體   English   中英

使用以下命令獲取opencv中的像素值

[英]get pixel values in opencv with at

我已經成功讀取了具有讀取功能的灰度圖像,並且嘗試訪問Al像素值並將其復制到2D向量。 我收到此錯誤:

gray image channels: 1
OpenCV Error: Assertion failed (dims <= 2 && data && (unsigned)i0 < (unsigned)si
ze.p[0] && (unsigned)(i1 * DataType<_Tp>::channels) < (unsigned)(size.p[1] * cha
nnels()) && ((((sizeof(size_t)<<28)|0x8442211) >> ((DataType<_Tp>::depth) & ((1
<< 3) - 1))*4) & 15) == elemSize1()) in cv::Mat::at, file C:\opencv_3\opencv\bui
ld\include\opencv2/core/mat.inl.hpp, line 894

我似乎不明白以下代碼有什么問題:

Mat img = imread("C:\\digitalImageProcessing\\lion2.png", 0);

if (!img.data)                          
{
    cout << "Could not open or find the image" << std::endl;
    return -1;
}


namedWindow("Gray image", CV_WINDOW_AUTOSIZE);

// know the number of channels the image has
cout << "gray image channels: " << img.channels() << endl;

// ******************* READ the Pixel intensity *********************

int no_of_cols = img.cols;
int no_of_rows = img.rows;
int initial_value = 0;

std::vector<std::vector<int>> image_matrix;
image_matrix.resize(no_of_rows, std::vector<int>(no_of_cols,initial_value));

for (int j = 0; j < img.rows; j++)
{
    for (int i = 0; i < img.cols; i++)
    {
        Scalar value = img.at<uchar>(i, j);
        cout << "value = " << endl << " " << value.val[0] << endl << endl;
        image_matrix[i][j] = intensity.val[0];
    }
}

也許有比我下面的代碼更好的方法,但我認為它可能比您的每像素循環更好

#include "opencv2/opencv.hpp"
#include "iostream"

using namespace cv;
using namespace std;

int main()
{
    Mat img = Mat(3,3,CV_8UC1);
    randu(img,0,255);

    cout << "img pixels \n\n" << img << endl;

    vector<vector<int> > image_matrix;
    vector<int> image_matrix_row;

    for( int i = 0; i < img.rows; i++)
    {
         img.row(i).copyTo(image_matrix_row);
         image_matrix.push_back(image_matrix_row);
    }
    cout << "\nimage_matrix[1][1] : " << image_matrix[1][1];
    return 0;
}

輸出:

img pixels

[ 91,   2,  79;
 179,  52, 205;
 236,   8, 181]

image_matrix[1][1] : 52

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM