matlab - 具有固定 x/y 比例的裁剪图像

标签 matlab image-processing crop

我想使用以下代码裁剪图像。但我希望用户只能选择具有预定义的 x/y 比率的裁剪区域。例如,如果 x=2,y=2 ,则用户只能使用鼠标选择比率为 (x/y)=1 的区域。

I = imread('image.jpg');
[rows columns numberOfColorBands] = size(I);
I2 = imcrop(I);
imshow(I), figure, imshow(I2)

最佳答案

您可以使用 imrect 生成坐标,然后将它们传递给 imcrop。

figure, imshow(I);
h = imrect(gca,[10 10 100 100]); 
setFixedAspectRatio(h,1); % this fixes the aspect ratio; user can now change size/position
position = wait(h); % returns coordinates in "position" when user doubleclicks on rectangle
I2 = imcrop(I,position);
figure, imshow(I2);

在实际代码中,您必须将 [10 10 100 100] 替换为适合图像大小/长宽比的内容。您可能需要向 imrect 添加其他约束(例如阻止用户将矩形移动到实际图像之外)。

关于matlab - 具有固定 x/y 比例的裁剪图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16633554/

相关文章:

java - 将日志文件解析为 CSV 格式

matlab - 在matlab中将上午1点时间转换为下午1点时间

python - 检查像素(RGB 或 HSV)是否包含在色标范围内,如何

ios - 就地调整 UIImage 的大小

swift - 裁剪(至 : CGRect) doesn't crop correctly

java - MappedByteBuffer 字节顺序颠倒了?

java - 在 MatLab 中插入 Java 代码

java - 纹理变形,4 点

ios - 将视频裁剪为方形 iOS

c# - 如何自动裁剪图像?