在scilab中裁剪图像

时间:2015-02-23 15:20:11

标签: 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 个答案:

答案 0 :(得分:1)

问题产生于图像坐标系(由imcropSIVP toolbox的所有其他函数使用)和“常规”坐标系(由rubberbox使用)之间的差异,xcick和所有内置函数)。图像左上角有第一个像素。相反,rubberbox左下角为零。 要纠正此问题,您必须在应用imcrop()之前反转y(垂直)轴坐标:

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');