0

Моя конечная задача лаборатории - обрезать части изображения, вставляя обрезанное изображение в оригинальное назад, вращая и изменяя его размер.Обрезка/вставка в двумерном массиве изображений - проблемы с распределением памяти

У нас есть изображение как 2D-массив в txt-файле, а Matlab преобразует текстовые файлы в файлы изображений/изображений в txts, поэтому мы можем видеть наши результаты.

С моим кодом, когда я обрезаю квадрат (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

Если я не ошибаюсь, по х, у системы координат х должны быть колонны и у ш ould be rows, и это то, что я имею в виду для противоположной вставки: http://i.imgur.com/wgYsj.png, зеленый ящик - это то, что я хочу, красная коробка - это то, что выходит ...

Первые 2 значения в текстовом файле определяют размеры изображения, это как профессор организовал свой скрипт Matlab и код на C++.

Я был бы рад вашим советам и комментариям, чтобы решить проблемы. Я знаю, что код длинный, но я думаю, что мне нужно было вставить все, чтобы объяснить, с чем я столкнулся. Проблема должна заключаться в функциях CCTOR, = op, extract или insert.

+0

@Anarkie - вам нужно нажать на галочку рядом с ответом - после этого вы увидите зеленую галочку рядом с ответом – Attila

+0

@Anarkie - когда вы говорите «вставляет обрезанное изображение в противоположные координаты», вы означает, что он посеял из неправильных координат или вы имеете в виду операцию вставки ('extract_sub_image()' только создает новую, не вставляет) – Attila

+0

@Anarkie: Woops, моя ошибка. Я сказал стрелки, но я имел в виду * галочку *. –

ответ

0

Мне кажется, что каким-то образом вы переворачиваете свои столбцы своими строками. Это объясняет, почему, когда высота не совпадает с шириной, вы получаете исключение и почему оно переворачивает вашу картинку, когда они одинаковы.

Я не смотрел ваш код, но я бы предположил, что вы просто используете индекс строки для массива столбцов и индекс столбца для массива строк в вашем двумерном массиве. Это самая простая причина.

Кроме того, совет для вас: если вы перепишете его как 1-мерный массив ширины высоты *, вы получите резкое увеличение скорости. Напишите метод, который принимает координаты x и y и переводит эти координаты в один индекс для вашего 1-мерного массива и возвращает значение, поэтому вам не нужно беспокоиться о деталях после того, как вы создали этот метод.

 Смежные вопросы

  • Нет связанных вопросов^_^