在 scilab 中裁剪图像

Crop image in 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 函数使用鼠标选择进行裁剪,它也给出了同样的错误。 请给我纠正代码的建议。

感谢和问候

问题是由于图像坐标系(由 imcropSIVP toolbox 的所有其他函数使用)和 "regular" 坐标系(由 rubberboxxcick 和所有内置函数)。图像的第一个像素位于左上角。相反 rubberbox 在左下角有零。 要更正此问题,您必须在应用 imcrop():

之前反转 y(垂直)轴坐标
imagefile="d:\Attila\PROJECTS\Scilab\Whosebug\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');