如果汉语背后没有文化,文化背后没有思想,思想背后没有精神,光TMD编造老娘和乔布斯没有说过的话,那中国永远不会是一个伟大的国家。——撒切尔夫人

2021—2022学年第一学期寒假学习记录12

2022.01.12,今天是服务外包竞赛:随便拿个奖队的项目进行的第十二天,今天根据项目要求继续学习matlab数字图像处理

Clf   ‘为:清除figure窗口中的内容,并不关闭figure窗口;

Figure  ‘为:打开一个新的figure窗口;

Close   ‘为:关闭一个figure窗口;

Close all  ‘为:关闭所有的figure图形窗口;

Title(‘标题‘) ‘为:为图形输入标题;

Text(x,y,’文字’)‘为:在figure窗口的(x,y)坐标处输入文字“字符串”;

View(2)   ‘为:把图形跳回到二维显示;

View(3)   ‘为:把图形跳回到三维显示;

Grid on     ‘为:显示栅格;

Hold on     ‘为:保持当前figure窗口图形;

Xlabel(’文字’)、ylabel(‘文字’)、zlabel(‘文字’)‘为:定义X,Y,Z轴;

Axis(‘square‘)为:使得XYZ坐标长度相等;

Axis([a,b,c,d,e,f])  ‘为:定义a<x<b,c<y<d,e<z<f坐标范围;

Plot(x,y,’:dm’)  ‘为:作xy图,线性为虚线(“:”),标记为菱形(“d”),颜色为洋红色(“m”);

p=Polyfit(x,y,m)‘为:用m项式拟合x,y数据;

xi=1:0.1:10

yi=Polyval(p,xi)‘为:求得多项式p在xi内的值,并且赋值给yi;

 

定义一个inline函数:>> fun=inline('x^2+5','x')

fun =

     Inline function:

     fun(x) = x^2+5

>> fun(4)

ans =

21   (或者写成:feval(fun,4),结果也是一样的等于21)

 

定义一个匿名函数:>> fun=@(x)x^2

fun =

    @(x)x^2

>> feval(fun,5)   ‘用feval函数求相应的值;

ans =

    25

返回函数的最大最小值:

>> y=[5,7,8,33545,0];

>> max(y)

ans =

       33545

>> min(y)

ans =

     0

 

 

 

 

有关 figure的相关函数:

(1)在figure窗口输入数据:

Gtext(‘字符串‘)   ‘为:在figure窗口处插入相应字符串;

gtext({'我爱你!','i love you !','jtame'})  ‘为:一次性分三行在figure输入:芳~我爱你!

                                                                     i love you !

                                                                     jtame

gtext({'我爱你!';'i love you !';'jtame'})   ‘为:分三次在三个地方输入:芳~我爱你!  i love you !  jtame

(2)在figure窗口提取数据:

>>Ginput          ‘在figure窗口中选区任意个点,在按下回车键后返回点的坐标值;

>>[x,y]=ginput       ‘在figure窗口中选区任意个点,在按下回车键后返回点的坐标值给

x,y;

>>[x,y]=ginput(4)       ‘在figure窗口中选区4个点,在按下回车键后返回点的坐标值给

x,y;

>>[x,y,button] = ginput( )   ‘返回x和y的坐标,以及button值(1=左键,2=中,3=右)或者按键的ASXII码值。

 

>> Clc             ‘为:清除窗口并且光标回到原始处;   

 

(3)提取图片中曲线的数据:

如图:

假设图片保存在D盘,图片名字为:一般图像.jpg,jpg格式。

打开matlab ,如下输入:

>> y=imread('d:\一般图像.jpg'); %读取该图

>> imshow(y)  %显示该图

>> set(gcf,'outerposition',get(0,'screensize')); %使该图显示最大化,便于取点

>> [x0,y0] = ginput; %利用鼠标取点,按回车键结束。这个时候应顺序点取图中坐标轴

左下,左上,右上,右下四个点。

>> [x1,y1] = ginput; %开始撷取其中一条实线上的点,按你需要的精度,点取任意多的点,回车结束

%因为位图的屏幕坐标是从左上角为坐标原点开始的,需要做些变换:

>> x1= (x1-min(x0))*350/(max(x0)-min(x0))+375;%如果坐标原点不为0,则需在该轴加上

省的坐标轴数(此处为x轴加上375);350是图像轴的标长;

>> y1=(y1-max(y1))*3.5*10^5/(min(y0)-max(y0)); %y轴做同样的处理;

>> plot(x1,y1,'k.','Markersize',5); %画图,设置为黑色的点图

>> axis([400,700,0,350000]);%定义坐标范围

>> set(gcf,'outerposition',get(0,'screensize')); %使该图显示最大化,便于观察

 

另外一种方法:

如图:


    im=imread('D:\一般图像.jpg');%读入图片
    [y,x]=find(im==0);%找出图形中的“黑点”的坐标。该坐标是一维数据。
    y=max(y)-y;%将屏幕坐标转换为右手系笛卡尔坐标
    y=fliplr(y);%fliplr()——左右翻转数组
    plot(x,y,'r.','Markersize', 2);
    disp('请在Figrure中先后点击实际坐标框的两个顶点,即A、B两点. ');
    [Xx,Yy]=ginput(2);%Xx,Yy——指实际坐标框的两个顶点
    min_x=input('最小的x值');%输入x轴最小值
    max_x=input('最大的x值');%输入x轴最大值
    min_y=input('最小的y值');%输入y轴最小值
    max_y=input('最大的y值');%输入y轴最大值
    x=(x-Xx(1))*(max_x-min_x)/(Xx(2)-Xx(1))+min_x;
    y=(y-Yy(1))*(min_y-max_y)/(Yy(2)-Yy(1))+max_y;
    plot(x,y,'r.','Markersize', 2);

   axis([375,725,0,350000])%根据要求设置坐标范围

 

 



 

posted @   崤函隳  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示