在 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 函数使用鼠标选择进行裁剪,它也给出了同样的错误。
请给我纠正代码的建议。
感谢和问候
问题是由于图像坐标系(由 imcrop
和 SIVP toolbox 的所有其他函数使用)和 "regular" 坐标系(由 rubberbox
、xcick
和所有内置函数)。图像的第一个像素位于左上角。相反 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');
我想在 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 函数使用鼠标选择进行裁剪,它也给出了同样的错误。 请给我纠正代码的建议。
感谢和问候
问题是由于图像坐标系(由 imcrop
和 SIVP toolbox 的所有其他函数使用)和 "regular" 坐标系(由 rubberbox
、xcick
和所有内置函数)。图像的第一个像素位于左上角。相反 rubberbox
在左下角有零。
要更正此问题,您必须在应用 imcrop()
:
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');