Вопрос программирования MATLAB, касающийся манипулирования изображениями - PullRequest
0 голосов
/ 31 мая 2011

Вопрос: Запросить обрезку края (1. вверху, 2. слева, 3. вправо, 4. внизу) и количество пикселей для удаления и делает это. Реализуйте как функцию: pic_new = crop_image (рис., Направление, пиксели);

Как мне сделать функцию с указанными входами? Я знаю, что есть функция imcrop (), но я не могу заставить ее работать. Пожалуйста помоги. Спасибо за ваше время.

Ответы [ 2 ]

0 голосов
/ 31 мая 2011

Вы начинаете определение функции следующим образом:

function [out1, out2] = my_func(in1, in2, in3)

Вы можете обрабатывать различные варианты поведения на основе значения переменной, например:

switch (x)
    case 1
        % Stuff for x==1
    case 2
        % Stuff for x==2
    case 3
        % Stuff for x==3
    otherwise
        % Stuff for all other values of x
end

Вы можете удалять элементы измассив, подобный этому:

matrix_out = matrix_in(x1:x2, y1:y2, :);

(Помните, что изображение обычно представляется в виде двумерного массива (или 3D, если это RGB).

Этого должно быть достаточно, чтобы ответить на ваш вопрос. Еслиэто не так, вам нужно более четко понимать, что вы хотите сделать.

0 голосов
/ 31 мая 2011

Но imcrop - это именно та функция, которую вам нужно использовать.В вашем случае это должно выглядеть следующим образом:

Сначала создайте прямоугольник по координатам и его высоте и ширине:

x = 50 
y = 50
height = 20
width = 20 

Затем загрузите и обрежьте изображение:

I = imread('image.png');
I2 = imcrop(I, [x, y, height, width]);
imshow(I), figure, imshow(I2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...