0
我花了大量的時間尋找圖像處理教程(沒有使用外部庫),沒有真正的成功。如果有人知道任何可以用這種方式獲得幫助的好教程,我會非常感激。圖像處理(向量下標超出範圍)
我對編碼(這是我在大學的第一年)很新穎,我們的教授要求的任務需要原始代碼來轉換24位位圖圖像。
我發現StackExchange一個問題,顯示圖像的旋轉不使用外部庫:
使用此代碼(與我們得到的啓動項目,我不得不建立在)我能夠創建此代碼:
字節被定義爲無符號字符的typedef。
void BMPImage::RotateImage()
{
vector<byte> newBMP(m_BIH.biWidth * m_BIH.biHeight);
long newHeight = m_BIH.biWidth; /* Preserving the original width */
m_BIH.biWidth = m_BIH.biHeight; /* Setting the width as the height*/
m_BIH.biHeight = newHeight; /* Using the value of the original width, we set it as the new height */
for (int r = 0; r < m_BIH.biHeight; r++)
{
for (int c = 0; c < m_BIH.biWidth; c++)
{
long y = c + (r*m_BIH.biHeight);
long x = c + (r*m_BIH.biWidth - r - 1) + (m_BIH.biHeight*c);
newBMP[y] = m_ImageData[x];
}
}
m_ImageData = newBMP;
}
這段代碼並不顯示任何紅色squigglies,但是當我嘗試執行旋轉,我得到一個向量下標越界錯誤信息彈出。我以前只在一個任務中使用過矢量,所以我不知道問題出在哪裏。請幫助!
我認爲這個問題可能會在這裏:
m_ImageData = newBMP;
所以...我想要-1最後一個數字來說明第一個元素是0而不是1,而矢量大小實際上看起來少一個,因爲它以0開始......然後......長y =(c +(r * m_BIH.biHeight))-1'? – Mel