C++ 显示灰度图像中的像素块

C++ 显示灰度图像中的像素块,c++,opencv,C++,Opencv,我有一个灰色图像,我想得到每8个像素的像素值 (像素块) 如何从灰色图像中读取此像素块? 这是我做的代码 void main() { Mat img = imread("Frame.jpg",0); if(!img.data) std::cout << "error"; double minVal, maxVal; minMaxLoc(img,&minVal,&maxVal,NULL,NULL); double Threshold = 0.5 *

我有一个灰色图像,我想得到每8个像素的像素值 (像素块) 如何从灰色图像中读取此像素块? 这是我做的代码

void main()

{
 Mat img = imread("Frame.jpg",0);

if(!img.data)   
    std::cout << "error";

double minVal, maxVal;
minMaxLoc(img,&minVal,&maxVal,NULL,NULL);
double Threshold = 0.5 * (minVal + maxVal);
int i,j;
for (i=0;i<img.rows;i++)
    for(j=0;j<img.cols;j++)
        unsigned char Pixel = img.at<unsigned char>(i,j);




namedWindow( "Display window", CV_NORMAL );// Create a window for display.
    imshow( "Display window", img );
 waitKey(0);    

     }
void main()
{
Mat img=imread(“Frame.jpg”,0);
如果(!img.data)

std::cout不确定您正试图做什么,但是,如果您试图获取中心像素周围的像素,您可以通过调整索引手动完成。如果像素周围的块被标记为:

0 1 2
3 P 4
5 6 7
通过在循环中执行此操作,可以获得0-7的值

for (i=1;i<img.rows-1;i++){
    for(j=1;j<img.cols-1;j++){
        unsigned char Pixel = img.at<unsigned char>(i,j);
        unsigned char Pixel_0 = img.at<unsigned char>(i-1,j-1);
        unsigned char Pixel_1 = img.at<unsigned char>(i,j-1);
        unsigned char Pixel_2 = img.at<unsigned char>(i+1,j-1);
        unsigned char Pixel_3 = img.at<unsigned char>(i-1,j);
        unsigned char Pixel_4 = img.at<unsigned char>(i+1,j);
        unsigned char Pixel_5 = img.at<unsigned char>(i-1,j+1);
        unsigned char Pixel_6 = img.at<unsigned char>(i,j+1);
        unsigned char Pixel_7 = img.at<unsigned char>(i+1,j+1);
    }
}

用于(i=1;感谢david的回答我制作了另一个可以读取每行16*16像素数组的代码,现在我需要从每个数组中获取像素值,因为我正在图片中搜索一个代码,该代码的颜色依次为黑色、白色、黑色和白色,如果你知道,我可以分享我的代码和图片,也许你知道我怎么能做到这一点
for (i=1;i<img.rows-1;i++){
    for(j=1;j<img.cols-1;j++){
        unsigned char Pixel = img.at<unsigned char>(i,j);
        cv::Mat ROI = img(cv::Rect(i-1,j-1,3,3));
    }
}