用matlab提取图片中曲线的数据
使用matlab提取图片中的曲线的数据,话不多说,代码如下,注释都比较详细
1 clc,clear; 2 disp('提示:命令行窗口键入:ctrl+c,表示停止运行 '); 3 im=imread('b.png');%读入图片(替换成需要提取曲线的图片) 4 im=rgb2gray(im);%灰度变化 5 thresh = graythresh(im);%二值化阈值 6 thresh=thresh+0.2;%有时候thresh的值偏低,可以手动调节提高一点,这里就提高了 7 im=im2bw(im,thresh);%二值化 8 set(0,'defaultfigurecolor','w');%设置MATLAB中figure的背景为白色 9 disp('请在Figrure中先后点击图片窗口,先左下取一点,然后右上取一点,用于裁剪掉坐标轴的信息 '); 10 input('理解OK了之后输入''1''即可开始'); 11 imshow(im)%显示图片 12 [NY,NX]=size(im);%获取图片像素矩阵的大小 13 [XX,YY]=ginput(2);%——获取图片剪裁的地方,消除坐标轴,先左下取一点,然后右上取一点 14 %把数据转换为整型 15 XX=int32(XX) 16 YY=int32(YY) 17 %消除坐标轴,让其变成白色 18 for i=1:1:XX(1) 19 im(:,i)=1; 20 end 21 for i=XX(2):1:NX 22 im(:,i)=1; 23 end 24 for i=1:1:YY(2) 25 im(i,:)=1; 26 end 27 for i=YY(1):1:NY 28 im(i,:)=1; 29 end 30 imshow(im)%显示图片 31 pause(1);%暂停一下,看看裁剪效果 32 close();%可以了,不看了 33 [y,x]=find(im==0);%找出图形中的“黑点”的坐标。该坐标是一维数据。 34 %坐标转换,变换成正常坐标轴 35 length_y=length(y); 36 for i=1:1:length_y 37 y(i)=NY-y(i); 38 end 39 min_x=input('坐标轴最小的x值');%输入x轴最小值 40 max_x=input('坐标轴最大的x值');%输入x轴最大值 41 min_y=input('坐标轴最小的y值');%输入y轴最小值 42 max_y=input('坐标轴最大的y值');%输入y轴最大值 43 %实际坐标转化 44 x=x*(max_x-min_x)/NX+min_x; 45 y=y*(max_y-min_y)/NY+min_y; 46 plot(x,y,'r.','Markersize', 2);%绘制最终坐标图 47 if exist('DATA.xlsx','file')%判断存储数据的文件是不是存在,存在就删掉 48 delete('DATA.xlsx'); 49 end 50 DATA=[x y];%横纵坐标数据整合 51 xlswrite('DATA.xlsx', DATA);%导出到excel 52 disp('坐标数据已经保存到DATA.xlsx中了,赶紧去看看吧 ');
分类:
MATLAB
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?