我有這個功能半的工作,但似乎散發出來的圖像過於模糊。這是因爲它處理已經模糊的部分,我想象?圖像過分模糊?需要避免的是處理已經模糊部分
有人告訴我,我需要把它寫入到一個新的圖像,但我無法弄清楚如何創建這一點。當我使用Image tempImage構造函數時,我得到了分段錯誤的錯誤,無法確定原因。在此之前的功能,有一個功能scaleUp
,使圖像變大並保存到newImage.pixelData
,由構造Image newImage(width*numTimes, height*numTimes, colorMode);
void Image::simpleBlur(int numPixels)
{
int middlePixX, middlePixY, redSum, greenSum, blueSum, denominator = 0;
//Image tempImage(width, height, colorMode);
//tempImage.createImage(width, height);
for (int middlePixX = 0; middlePixX < width; middlePixX++)
{
for (int middlePixY = 0; middlePixY < height; middlePixY++)
{
for (int x_subgrid = -1*numPixels; x_subgrid <= numPixels; x_subgrid++) //for (int x_subgrid = 0; x_subgrid < DIM_SQUARE; x_subgrid++)
{
for (int y_subgrid = -1*numPixels; y_subgrid <= numPixels; y_subgrid++) //for (int y_subgrid = 0; y_subgrid < DIM_SQUARE; y_subgrid++)
{
int xPos = x_subgrid + middlePixX;
int yPos = y_subgrid + middlePixY;
if(xPos >= 0 && xPos < width && yPos >= 0 && yPos < height)
{
redSum = redSum + pixelData[xPos][yPos].getRed();
greenSum = greenSum + pixelData[xPos][yPos].getGreen();
blueSum = blueSum + pixelData[xPos][yPos].getBlue();
denominator++;
}
}
}
redSum = redSum/denominator;
greenSum = greenSum/denominator;
blueSum = blueSum/denominator;
pixelData[middlePixX][middlePixY].setRed(redSum);
pixelData[middlePixX][middlePixY].setGreen(greenSum);
pixelData[middlePixX][middlePixY].setBlue(blueSum);
redSum, greenSum, blueSum = 0; denominator = 0;
}
}
}
什麼是圖像?你在做什麼來獲得段錯誤?我的猜測是你在修改'Image',所以你需要其中一個去檢查,另一個去寫,所以我想知道爲什麼你不能創建另一個。最後,你的問題是什麼? – 2010-04-20 21:40:08
圖像是一個類。 我用'圖片tempImage(寬度,高度,colorMode);'來創建新的圖像(模糊的一個),並試圖寫它,但它似乎在被調用段錯誤。 我的問題是,是功能中的正確步驟,還有其他問題出錯了嗎?還是有不同的想創建這個'臨時'我正在寫給 – codefail 2010-04-20 21:44:55
也許你可以澄清你的問題一點。現在還不清楚你是否想知道如何檢測圖像的一部分是否模糊,或者如何創建一個新的圖像,或者兩者兼而有之,或者可能是其他的東西。我懷疑任何人都可以告訴你如何使用你的'Image'類的構造函數,卻看不到它... – 2010-04-20 21:46:10