2015-02-23 6 views
1

Я хочу, чтобы обрезать изображение с помощью выбора мыши в определенной области интереса в Scilab, вот мой кодОбрезка изображения в Scilab

I=imread('G:\SCI\FRAME\mixer2.jpg'); 
    I1G = rgb2gray(I); 
    figure();ShowImage(I1G,'mixer'); 
    IN1G = gca(); 
    rect1 = rubberbox(); 
    ROI1=imcrop(I1G,rect1);disp(ROI1); 

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

Спасибо и наилучшие пожелания

ответ

1

Проблема возникает из-за разницы между системой изображения координат (используется imcrop и все другими функциями SIVP toolbox) и система «регулярная» координата (используется rubberbox, xcick и все встроенные функции). Изображения имеют первый пиксель в верхнем левом углу. Наоборот, rubberbox имеют ноль внизу слева. Чтобы исправить это, вы должны обратить у (по вертикали) оси координат перед нанесением imcrop():

imagefile="d:\Attila\PROJECTS\Scilab\Stackoverflow\mixer_crop.jpg"; 
I=imread(imagefile); 
I1G=rgb2gray(I); 
scf(0); clf(0); 
ShowImage(I1G,'mixer'); 
rect1=rubberbox(); 
imheight=size(I1G,"r"); //image height 
rect1(2)=imheight-rect1(2); //reverse y axes coordinates (0 is at top) 
ROI1=imcrop(I1G,rect1); 
scf(1); clf(1); 
ShowImage(ROI1,'ROI1'); 
+0

также дает следующее сообщение об ошибке: - Прямоугольник из диапазона изображений (я также попытался rect1 (2) вместо rect1 в ROI1). – khushbu

+0

Не пытайтесь попасть в рамку вашего изображения с помощью резиновой коробки, но выберите только внутренние точки! Если вы хотите точно выбрать стороны со стороны, вам может понадобиться исправить полученные «co1-выражения» rect1', чтобы оставаться внутри изображения, так как фактический клик может быть снаружи. – Attila

+0

Нет, потому что я хочу выбрать область интереса к изображению. – khushbu