关于imcrop和字符串、数字矩阵、符号矩阵之间的转换
1、把多幅图像放在str(1,m)(这是一个cell包)中然后可以用imcrop(str{1,m});对其中某张图进行截图吗
应该是可行的
2、matlab的gui中如何把imcrop的rect保存
我想利用imcrop(img,rect)通过在弹出的对话框里输入rect的值,(rect是个数字矩阵)实现对img的截图。但是对话框里面是一个cell,矩阵被包在‘’里成了字符串,字符串又被成了cell的一个元素,如何把我要的矩阵拿出来。里面包的然后想把那个cell拿出来,居然变成了
参考以下程序,以便了解,字符串、矩阵、符号之间的关系
clear
a=1;b=2;c=3;d=4; %产生4个数值变量
Mn=[a,b;c,d] %利用已赋值变量构成数值矩阵
Mc=’[a,b;c,d]’ %字符串中的a,b,c,d与前面输入的数值变量无关
Ms=str2sym(Mc) %Ms是一个符号矩阵,它与前面各变量无关
接下来如何把符号矩阵转换成数字矩阵呢
另外直接用
answer = inputdlg(‘裁剪的位置’,‘裁剪图像’,[1 50],{’[1 2 3 4]’});
a=str2double(answer);
是不行的。
如何改变对话框的大小可以参考
https://zhidao.baidu.com/question/2203545152844299868.html
有两种思路:
%第一种
prompt={‘请输入系数a’,‘请输入系数b’};
words=‘请输入线性拉伸函数:’;
answer = inputdlg(prompt,words,[1 50;1 30],{‘0.5’,‘2’});
a=str2double(answer(1));
b=str2double(answer(2));
%运行一下上面的代码,可以通过控制最长文本框的长度,从而间接控制是否显示标题
%第二种
prompt={‘请输入系数a’,‘请输入系数b’};
words=‘请输入线性拉伸函数:’;
options.Resize=‘on’;
options.WindowStyle=‘normal’;
options.Interpreter=‘tex’;
answer = inputdlg(prompt,words,1,{‘0.5’,‘2’},options);
a=str2double(answer(1));
b=str2double(answer(2));
%运行上面代码,设置非模态窗口,运行完后,鼠标拖动到合适大小。