【问题标题】:Apply blur on BMP pixel RGB array在 BMP 像素 RGB 阵列上应用模糊
【发布时间】:2015-05-24 20:19:41
【问题描述】:

我正在尝试应用模糊效果,但我得到完全错误的颜色 我正在使用 Easy_BMP 库将 BMP 文件加载到像素阵列中。 我尝试参考this topic 来实现高斯模糊算法。怎么了?

void blur3x3(int i, int j, RGBApixel** pixelArray, BMP &Image) {

double blurValue = 0.111;
int avgR = 0;
int avgG= 0 ;
int avgB = 0;

int b = 0;
for(int w = i-1 ; w <= i+1 ; w++) {
    for(int z = i-1 ; z<=j+1 ; z++) {
        avgR = avgR + blurValue*( pixelArray[w][z].Red   );
        avgG = avgG + blurValue*( pixelArray[w][z].Green );
        avgB = avgB + blurValue*( pixelArray[w][z].Blue  );
    }
}

Image(i,j)->Red = (BYTE) avgR ;
Image(i,j)->Green = (BYTE) avgG;
Image(i,j)->Blue = (BYTE) avgB;

}


bool blur() {

BMP Image;
Image.ReadFromFile(fullFilePath);

int w = Image.TellWidth();
int h =  Image.TellHeight();

RGBApixel** pixelArray = new RGBApixel*[w];
for(int i = 0; i < w; ++i)
    pixelArray[i] = new RGBApixel[h];

for( int i=0 ; i < Image.TellWidth() ; i++) {
    for( int j=0 ; j < Image.TellHeight() ; j++) {
        pixelArray[i][j] = Image.GetPixel(i,j);
    }
}

for( int i=1 ; i < Image.TellWidth()-1 ; i++) {
    for( int j=1 ; j < Image.TellHeight()-1 ; j++) {
        blur3x3(i,j, pixelArray, Image);
    }
}

Image.SetBitDepth( 32 );
Image.WriteToFile( "/home/kxyz/BMP/gray.bmp" );
}

【问题讨论】:

    标签: c++ image image-processing bmp


    【解决方案1】:

    for(int z = i-1 ; z&lt;=j+1 ; z++) {,尝试更改

    int z = i-1
    

    int z = j-1
    

    此外,您不会删除在 blur 函数中分配的任何数组。

    【讨论】:

    • 现在它可以工作了,简单的错误,有趣但我找不到这个:) 谢谢!
    • @kxyz 很高兴我能帮上忙。请考虑接受答案,因为它解决了您的问题。
    猜你喜欢
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2021-06-08
    • 2012-09-29
    • 1970-01-01
    • 2013-04-10
    • 2016-06-22
    • 1970-01-01
    相关资源
    最近更新 更多