处理文本文件和查看图片注释。
2视图(30天)
显示旧的评论
萨阿德Saboor
2015年1月15日
我必须在Matlab中导入一个文本文件,其中包含几个随机数字代表X和Y坐标。然后我必须展示这些点在一个png图片。文本文件包含20个这样的点。我用“dlmread”,但它使一个矩阵的所有这些点当我需要20这样的矩阵。我怎么能让几个矩阵使用文本文件,我怎么能显示图片。这些点吗?
P。的点是:
1428 742
256 84
986年547年……等
这些点代表图片的像素,我必须向他们展示在一个不同的颜色,它像飞镖的照片但是我不知道如何去做。
0评论
接受的答案
图像分析
2015年1月15日
我不明白为什么你需要20矩阵当你所有的x, y数据在一个矩阵得到从dlmread ()。如何打电话只是dlmread()和(),情节是这样的:
data = dlmread(文件名,' ');
(行、列)=大小(数据);
imshow (yourImage);
持有在;
为行= 1:行
randomColor =兰德(1、3);
情节(数据(行,1),数据(行,2),“。”,…
“颜色”randomColor,“MarkerSize”3);
结束
20的评论
图像分析
2015年1月15日
您可以使用矩形()或情节()来显示框上面的叠加。框将图中所有点,至少我没试过一盒,叶子图片(轴)。如果你想要盒子有不同的颜色的时候在一些图像的特定部分,然后你要用阴谋()或()行画线段在那部分你想要的颜色。
线(x1, x2), (y1, y2),“颜色”,“b”,“线宽”3);
之类的。但是你必须提前知道那个盒子的部分是需要用一种不同的颜色。
萨阿德Saboor
2015年1月15日
编辑:萨阿德Saboor
2015年1月15日
形象= imread (“avengers.png”);
Data1 = dlmread (“Annotations.txt”);
(行、列)= (Data1)大小;
Data2 = dlmread (“randPts1.txt”);
[rows1, columns1] =大小(Data2);
imshow(图片);
持有在;
为行= 1:行;
矩形(“位置”,(Data1(行,1),Data1(行,2),Data1(行,3),…
Data1(行,4)),“弯曲”(0,0),“线宽”2,“EdgeColor”,“r”);
结束
为第一行= 1:rows1;
情节(Data2(第一行,1)、Data2(第一行,2),“。”,…
“颜色”,“蓝”,“MarkerSize”15);
结束
![](http://www.tianjin-qmedu.com/matlabcentral/answers/uploaded_files/181378/image.png)
我用这段代码绘制蓝色点可以看到图片。仍然需要做的唯一的事就是改变这些点的颜色,躺在矩形以及矩形本身。我想开发一个嵌套的if语句来实现这一目标,但没有奏效。我也不知道如何使用inpolygon找到这些点和改变自己的颜色。
你能帮我写一个通用的代码,因为我必须执行这个10倍与不同的点。
图像分析
2015年1月15日
在第一个循环:
x1 = Data1(行,1);
日元= Data1(行,2)
x2 = x1 + Data1(行,3);
y2 = y₁+ Data1(行,4);
xRect(行,1:5)= (x1, x2, x2, x1, x1);
yRect(行,1:5)= (y1, y1, y2, y2, y1);
在第二个循环
x = Data2(第一行,1);
y = Data2(第一行,2);
在= false
%看x, y是任何的矩形内。
为r = 1:行
在= inpolygon (x, y, xRect (r,:), yRect (r,:))
如果内部
打破;
结束
结束
如果内部
%里面的其中一个矩形,所以情节为红色。
情节(x, y,“颜色”,的r *,“MarkerSize”15);
其他的
%里面不是任何矩形,所以情节在蓝色。
情节(x, y,“颜色”," b *’,“MarkerSize”15);
结束
萨阿德Saboor
2015年1月16日
非常感谢,现在我有这些点有不同的颜色,但我仍然需要那些矩形用不同的颜色。
矩形(“位置”,(Data1(行,1),Data1(行,2),Data1(行,3),…
Data1(行,4)),“弯曲”(0,0),“线宽”2,…
“线型”,“——”,“EdgeColor”,“黄色”);
我应该把这个代码或者我应该做什么来改变只有那些矩形包含点吗?
图像分析
2015年1月16日
只写,早期的矩形。在“如果”画新的矩形的其他颜色。
如果内部
%里面的其中一个矩形,所以情节为红色。
情节(x, y,“颜色”,的r *,“MarkerSize”15);
矩形(“位置”,(Data1(行,1),Data1(行,2),Data1(行,3),…
Data1(行,4)),“弯曲”(0,0),“线宽”2,…
“线型”,“——”,“EdgeColor”,“黄色”);
其他的
萨阿德Saboor
2015年1月16日
我试过但是没有帮助。这是我的代码:
形象= imread (“avengers.png”);
Data1 = dlmread (“Annotations.txt”);
(行、列)= (Data1)大小;
Data2 = dlmread (“randPts1.txt”);
[rows1, columns1] =大小(Data2);
imshow(图片);
持有在;
xRect(行,1:5)= 0;
yRect(行,1:5)= 0;
为行= 1:行;
x1 = Data1(行,1);
日元= Data1(行,2);
x2 = x1 + Data1(行,3);
y2 = y₁+ Data1(行,4);
xRect(行,1:5)= (x1, x2, x2, x1, x1);
yRect(行,1:5)= (y1, y1, y2, y2, y1);
矩形(“位置”,(Data1(行,1),Data1(行,2),Data1(行,3),…
Data1(行,4)),“弯曲”(0,0),“线宽”2,“EdgeColor”,“r”);
结束
为第一行= 1:rows1;
x = Data2(第一行,1);
y = Data2(第一行,2);
在= false;
%看x, y是任何的矩形内。
为r = 1:行
在= inpolygon (x, y, xRect (r,:), yRect (r,:));
如果内部
打破;
结束
结束
如果内部
%里面的其中一个矩形,所以情节为红色。
情节(x, y,“。”,“颜色”,“绿色”,“MarkerSize”15);
其他的
%里面不是任何矩形,所以情节在蓝色。
情节(x, y,“。”,“颜色”,“蓝”,“MarkerSize”15);
结束
结束
请告诉我把它放在哪里?
萨阿德Saboor
2015年1月16日
图像分析
2015年1月17日
萨阿德,这是代码:
clc;%清除命令窗口。
关闭所有;%关闭所有数据(除了imtool。)
清晰;%擦掉所有现有的变量。或者clearvars如果你想要的。
工作空间;%确定工作区面板显示。
格式长g;
格式紧凑的;
字形大小= 24;
%读入图像。
形象= imread (“avengers.png”);
%在矩形。
矩形= dlmread (“Annotations.txt”);
(行、列)=(矩形)大小;
%在随机点
randomPoints = dlmread (“randPts1.txt”);
[rows1, columns1] =大小(randomPoints);
%显示图象
imshow(图片);
持有在;
轴在;
%全屏放大图。
集(gcf,“单位”,“归一化”,“OuterPosition”,(0 0 1 1));
%的标题栏提供一个名称。
集(gcf,“名字”,“由ImageAnalyst演示”,“NumberTitle”,“关闭”)
%绘制矩形图像。
xRect = 0(行,5);% Preallocate。
yRect = 0(行,5);% Preallocate。
为行= 1:行;
x1 =矩形(行,1);
日元=矩形(行,2);
x2 = x1 +矩形(行,3);
y2 = y₁+矩形(行,4);
xRect(行,1:5)= (x1, x2, x2, x1, x1);
yRect(行,1:5)= (y1, y1, y2, y2, y1);
矩形(“位置”,(矩形(行,1),矩形(行,2),矩形(行,3),…
矩形(行,4)),“弯曲”(0,0),“线宽”2,“EdgeColor”,“r”);
结束
% uiwait(对话框('这些矩形'));
%画出图像标记。
为第一行= 1:rows1;
x = randomPoints(第一行,1);
y = randomPoints(第一行,2);
在= false;
%看x, y是任何的矩形内。
为r = 1:行
在= inpolygon (x, y, xRect (r,:), yRect (r,:));
如果内部
打破;
结束
结束
如果内部
%里面的其中一个矩形,所以情节绿色。
情节(x, y,“。”,“颜色”,‘g’,“MarkerSize”35);
标签= sprintf (“点# % d '第一行);
文本(x + 10, y,标签,“字形大小”字形大小,“颜色”,‘g’);
%改建矩形在绿色因为它包含一个随机点。
% " r "是矩形内。
矩形(“位置”,…
(矩形(r, 1),矩形(r, 2),矩形(r, 3),…
矩形(r, 4)),“弯曲”(0,0),…
“线宽”2,“EdgeColor”,‘g’);
其他的
%里面不是任何矩形,所以情节在蓝色。
情节(x, y,“。”,“颜色”,“b”,“MarkerSize”35);
标签= sprintf (“点# % d '第一行);
文本(x + 10, y,标签,“字形大小”字形大小,“颜色”,“b”);
结束
结束
![](http://www.tianjin-qmedu.com/matlabcentral/answers/uploaded_files/181405/image.jpeg)
图像分析
2015年1月17日
把里面一个数组,然后把它真正的如果里面,然后和你完成循环后的数组
内(第一行)= false;
所以无论你是指内部。后循环:
percentInside =(内部)/元素个数之和(内部)* 100;
萨阿德Saboor
2015年1月23日
先生,我使用一个for循环运行代码20次,每次用不同的随机点。在每个迭代中,我计算命中率,但当开始下一个循环,它覆盖前一个值存储。我怎么能让那些20命中率保存直到循环结束,作为一个条形图显示它们?
图像分析
2015年1月30日
我相信你一定认为显而易见的想法调整xRect和yRect矩形是一个像素小:
xRect(行,1:5)= (x1 + 1, x2-1 x2-1, x1 + 1, x1 + 1);
yRect(行,1:5)= (y1 + 1, + 1, y2-1 y2-1, y1 + 1);
有一些原因没有工作?
更多的答案(0)
一个错误发生
无法完成的行动,因为页面所做的更改。重新加载页面更新状态。
你也可以从下面的列表中选择一个网站
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。