matlab读取.bmp文件显示图形?
用readbmp.m能读取dx.bmp显示图形,为什么我把I=imread('dx.bmp'); %读入一幅图片改成I=imread('map.bmp'); 把gao=;=meshgrid(1:0.1:5)做相应修改,还是不能读取map.bmp显示图形。提示??? Index exceeds matrix dimensions. Error in ==> dizhenyuce at 22 BW=II(:,:,1)+II(:,:,2)+II(:,:,3);下面为readbmp.m文件:
I=imread('dx.bmp'); %读入一幅图片
%I=I(33:375,74:508,:); %须事先人工确定行标和列标
%提取坐标框内部分
I1=I(:,:,1); %提取红色灰度矩阵
pixel_black=(I1==0);
number_col=sum(pixel_black);
number_row=sum(pixel_black');
j1=find(number_col==max(number_col));
number_col(j1)=-1;
j2=find(number_col==max(number_col));
i1=find(number_row==max(number_row));
number_row(i1)=-1;
i2=find(number_row==max(number_row));
I=I(min(i1,i2):max(i1,i2),min(j1,j2):max(j1,j2),:);
%提取各等高线上颜色灰度值
II=I;
II(II==255)=0;
II(II>0)=255;
BW=II(:,:,1)+II(:,:,2)+II(:,:,3);
=find(BW);
up_row_id=min(row_id);
up_col_id=col_id(round(mean(find(row_id==up_row_id))));
left_col_id=min(col_id);
left_row_id=row_id(round(mean(find(col_id==left_col_id))));
pixel_BW=BW(up_row_id:left_row_id,up_col_id);
row_id=find(pixel_BW)-1+up_row_id;
yanse(:,1:3)=I(row_id,up_col_id,:);
%yanse=[0 0 143;
% 0 47 255
% 0 223 255
% 143 255 111
% 255 207 0
% 255 31 0
% 127 0 0]; %须事先人工确定各等高线颜色灰度值,用到了getpts函数
=size(I(:,:,1));
BW=zeros();
x_xishu=4/(n-1);
y_xishu=4/(m-1);
gao=;
%提取各等高线上点的三维坐标
xyz=[];
for i=1:7
BW1=BW;
BW1(I(:,:,1)==yanse(i,1)&I(:,:,2)==yanse(i,2)&I(:,:,3)==yanse(i,3))=1;
=find(BW1);
xyz=;
end
xyz=xyz(1:3:end,:);
xyz=;
x=xyz(:,1);
y=xyz(:,2);
z=xyz(:,3);
%产生网格数据,进行散乱节点插值拟合
=meshgrid(1:0.1:5)
z1=griddata(x,y,z,x1,y1,'v4');
=size(x1);
xyz1=
%画三维面图
figure
surf(x1,y1,z1)
shading flat; %各小曲面之间不要网格
zlim()
xlabel('X(单位:千米)')
ylabel('Y(单位:千米)')
zlabel('Z(单位:千米)')
怎样能读取任何.bmp文件显示图形,做到不需要每次读一个.bmp文件就要重新写一个代码?
回复 1 # sunminmin 的帖子
Ref 12F, 常见的程序出错问题整理 http://forum.vibunion.com/thread-46001-1-1.html
(from http://forum.vibunion.com/home-space-uid-63979-do-blog-id-18250.html) 回复 2 # ChaChing 的帖子
谢谢!
a = ;
b = ;
c = ;
plot3(a,b,c,'s')
用上面的代码能生成一个点,得到用一个小方格表示的,怎样写才能做到用黑点表示该点?
回复 3 # sunminmin 的帖子
plot3(a,b,c,'k.','MarkerSize',12) 回复 4 # ChaChing 的帖子
怎样用一条直线把两个点(1,2,3)(5,2,8)连起来? 回复 5 # sunminmin 的帖子
我都已上高速公路跑了几百公里回工作地了, 楼主还在!?:@)
plot3(,,)
或
line(,,); view(3) 回复 6 # ChaChing 的帖子
几百公里去工作地,好辛苦! 回复 1 # sunminmin 的帖子
clc; clear; I=imread('dx.bmp'); I2=imread('map.bmp');
whos看看两者维数的不同(421x561x3, 698x1280)! 回复 7 # meiyongyuandeze 的帖子
工作地与老家较远些! 不过相较内地应该还好:@) 回复 6 # ChaChing 的帖子
呵呵,:@)我是想实现下面这个用三维坐标(x,y,z)画折线的功能1. Engine *ep;
2.
3. if (!(ep = engOpen(NULL))) //打开Matlab引擎
4.
5. {
6.
7. MessageBox ("Can't start MATLAB engine", MB_OK);
8.
9. exit(-1);
10. }
11. mxArray *xx=mxCreateDoubleMatrix(1,6,mxREAL);
12. mxArray *yy=mxCreateDoubleMatrix(1,6,mxREAL);
13. mxArray *zz=mxCreateDoubleMatrix(1,6,mxREAL);
14.
15. double x[] ={0,1,2,3,4,5}, y[] = {0,1,4,9,16,25}, z[] = {1,2,3,4,5,6};
16.
17. engPutVariable(ep,"xx",xx);
18. engPutVariable(ep,"yy",yy);
19. engPutVariable(ep,"zz",zz);
20.
21. memcpy(mxGetPr(xx),x,6*sizeof(double));
22. memcpy(mxGetPr(yy),y,6*sizeof(double));
23. memcpy(mxGetPr(zz),z,6*sizeof(double));
24.
25. engEvalString(ep,"绘制6个三维点连成的线");???
26. 接下来用循环如何实现6点相连接???
就是利用matlab引擎在三维空间将这些坐标(x,y,z)所表示的点用黑点表示出来,前后两个点之间用直线连接,(0,0,1)连接(1,1,2)连接(2,4,3)连接(3,9,4)连接(4,16,5)连接(5,25,6),形成一条折线。 回复 10 # sunminmin 的帖子
VC++与matlab混合编程利用matlab引擎做的想要实现在三维空间画折线的功能,上面的代码接下来该如何处理?? plot3不行? 一直很纳闷,楼主费劲周折在matlab中画出曲面后再求出曲面点,在用这些点画直线,好像程序都是在matlab中编写的!
页:
[1]