将RGB转换为c ++中的灰度

问题描述 投票:0回答:1

我正在尝试使用平均方法将RGB图像转换为灰度。但是获得的输出与所需的输出不同。我正在拍摄图像并获取rgb值。我执行平均值运算,并存储平均值和图像大小相同的另一个数组。最后,我将数组转换为Mat并显示图像。

输入图像:

“输入图像”

所需的输出:

“所需的输出”“>

我的输出:

“我的输出”

int main()
{
 Mat image;

 image =imread("<image_path>");

 int rows=image.rows;
 int cols=image.cols;

 int myArray[rows][cols];


 for (int i = 0; i < rows; i++) {
   for (int j = 0; j < cols; j++) {
     myArray[i][j] = 0;
   }
 }

 uint8_t* pixelPtr = (uint8_t*)image.data;

 int cn = image.channels();

 Scalar_<uint8_t> bgrPixel;

 for(int i = 0; i < rows; i++)

 {
     for(int j = 0; j < cols; j++)

     {
         bgrPixel.val[0] = pixelPtr[i*image.cols*cn + j*cn + 0]; // B

         bgrPixel.val[1] = pixelPtr[i*image.cols*cn + j*cn + 1]; // G

         bgrPixel.val[2] = pixelPtr[i*image.cols*cn + j*cn + 2]; // R

         int average = (bgrPixel.val[0]+bgrPixel.val[1]+bgrPixel.val[2])/3;

         myArray[i][j]=average;


     }

 }

 Mat averaged_image(Size(rows, cols), CV_8UC3, myArray, Mat::AUTO_STEP);

 imwrite("<path to save the image>",averaged_image);

 imshow("averaged_image",averaged_image);

 waitKey(0);

 return 0;
}

我正在尝试使用平均方法将RGB图像转换为灰度。但是获得的输出与所需的输出不同。我正在拍摄图像并获取rgb值。我执行平均...

c++ image-processing rgb grayscale
1个回答
0
投票

创建Mat averaged_image时,

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.