C++ 如何从c+中的图像获取像素坐标+;使用特定条件

C++ 如何从c+中的图像获取像素坐标+;使用特定条件,c++,C++,我想从像素值不为零的图像中获得(x,Y)坐标。我在这段代码中得到了以下错误: 错误-访问错误: camera.cpp void Camera ::write_uint8_image_1(uint8_image_t *image, int *output) { int index = 1; for(uint32_t i = 0; i < image->h; i++) { for(uint32_t j = 0; j < image-&

我想从像素值不为零的图像中获得(x,Y)坐标。我在这段代码中得到了以下错误: 错误-访问错误:

camera.cpp
void Camera ::write_uint8_image_1(uint8_image_t *image, int *output)
{
    int index = 1;

     for(uint32_t i = 0; i < image->h; i++)
     {
         for(uint32_t j = 0; j < image->w; j++)
         {
             if(image->data[i * image->w + j] != 0)
                output[index++] = i;
                output[index++] = j;  /* error : bad access */
        }
     }
    output[0] = index;
}


main.cpp
 int output[800] = {0};

    /*print output*/

    C1.write_uint8_image_1(c.output_image, output);
    for (int i = 1; i < output[0]; i++)
        std::cout<< output[i] << " , ";
camera.cpp
无效摄影机::写入图片1(图片,int*输出)
{
int指数=1;
对于(uint32_t i=0;ih;i++)
{
对于(uint32_t j=0;jw;j++)
{
如果(图像->数据[i*图像->w+j]!=0)
输出[index++]=i;
输出[index++]=j;/*错误:访问错误*/
}
}
输出[0]=索引;
}
main.cpp
int输出[800]={0};
/*打印输出*/
C1.写入图像(c.输出图像,输出);
for(int i=1;istd::cout如果
if
index
应该从
0
开始,您可能需要一个花括号?谢谢您的评论。但它不起作用。可能还有其他问题,可能是您的
输出没有足够的分配空间。使用调试器,查看出现时的
i
j
值等。如果
索引应该从
0
开始,则可能需要在
后加一个大括号。谢谢您的评论。但它不起作用。可能还有其他问题,可能是您的
输出没有足够的分配空间。使用调试器,查看出现时的
i
j
值等。