0

我最后的实验室任务是从图像中裁剪部分,将裁剪后的图像插入原始背面,旋转并调整大小。

我们将图像作为 txt 文件中的二维数组,Matlab 将文本文件转换为图像/图像文件到 txt,因此我们可以看到我们的结果。

当我裁剪一个正方形(image.extract_sub_image(0,0,100,100);)时使用我的代码,没有问题,但是它将裁剪的图像插入到相反的坐标,我不知道为什么。此外,当我裁剪一个矩形(image.extract_sub_image(0,0,100,50);)时,程序崩溃了。也不知道为什么:(

PS:

read、write、get_dimensions函数都是教授给的,都是常数,头文件也是教授给的,**p2matr2D是他的主意,我改不了。

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

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

如果我根据 x,y 坐标系没有弄错,x 应该是列,y 应该是行,这就是我对相反插入的意思:http: //i.imgur.com/wgYsj.png,绿色框是我想要的,红框就是出来的...

文本文件中的前 2 个值确定图像尺寸,这就是教授安排他的 Matlab 脚本和 C++ 代码的方式。

我会很高兴您的提示和意见来解决问题。我知道代码很长,但我认为我需要粘贴所有内容以解释我面临的问题。问题应该出在 CCTOR、=op、extract 或 insert 函数中。

4

1 回答 1

0

在我看来,在某种程度上,你正在用你的行反转你的列。这可以解释为什么当高度与宽度不同时,你会得到一个异常,以及为什么当它们相同时它会翻转你的图片。

我没有查看您的代码,但我想您只是在二维数组中使用列数组的行索引和行数组的列索引。这是最简单的原因。

另外,给您一个提示:如果您将其重写为大小为 height*width 的一维数组,您将获得显着的速度提升。编写一个接受 x 和 y 坐标的方法,并将这些坐标转换为一维数组的单个索引并返回该值,这样您在创建此方法后就不必担心细节。

于 2012-06-22T08:05:40.303 回答