0

我的最終實驗任務是裁剪圖像中的部分,將裁剪後的圖像插入原始背面,旋轉和調整其大小。裁剪/插入2D圖像陣列 - 內存分配問題

我們將圖像作爲txt文件中的二維數組,並且Matlab將文本文件轉換爲圖像/圖像文件以txt,因此我們可以看到我們的結果。

用我的代碼當我裁剪一個正方形(image.extract_sub_image(0,0,100,100);),沒有問題,但它將裁剪圖像插入到相反的座標我不知道爲什麼。此外,當我裁剪一個矩形(image.extract_sub_image(0,0,100,50);)程序崩潰。另外不知道爲什麼:(

PS:

讀,寫,get_dimensions功能由prof.They給出的常數,頭文件也由教授給出**p2matr2D是他的想法,我不能改變它

我的代碼:http://codepad.org/F0mfR7dN

goldhill.txt文件:http://codepad.org/jfbeKLII

如果我不按X誤會,y座標系統,X應列和y SH應該是行,這就是我的意思是相反插入:http://i.imgur.com/wgYsj.png,綠框是我想要的,紅框是什麼出來...

文本文件中的前2個值決定圖像尺寸,這就是教授如何安排他的Matlab腳本和C++代碼。

我很樂意爲您提供解決問題的提示和意見。我知道代碼很長,但我認爲我需要粘貼所有內容才能解釋我面臨的問題。問題應該在CCTOR中,= op,提取或插入函數。

+0

@Anarkie - 你需要點擊答案旁邊的複選標記 - 你應該看到答案旁邊的綠色複選標記 – Attila

+0

@Anarkie - 當你說「將裁剪後的圖像插入到相反的座標」時,你會意味着它從錯誤的座標作物或你的意思是插入操作('extract_sub_image()'只創建一個新的,不插入) – Attila

+0

@Anarkie:Woops,我的錯誤。我說箭頭,但我的意思是*複選標記*。 –

回答

0

在我看來,在某些方面,你正在顛倒你的行與你的列。這可以解釋爲什麼當高度和寬度不一樣時,你會得到一個異常,以及爲什麼當它們相同時它會翻轉你的圖片。

我沒有看你的代碼,但我會想象你只是在你的二維數組中使用列數組的行索引和行數組的列索引。這是最簡單的原因。

另外,給你一個提示:如果你把它改寫成一個尺寸爲高度*寬度的一維數組,你會得到一個劇烈的速度增加。編寫一個接受x和y座標的方法,並將這些座標轉換爲您的1維數組的單個索引並返回該值,以便您在創建此方法後不必擔心細節。