小编Kam*_*ely的帖子

如何在矩阵或二进制图像中绘制多边形以使用图像处理功能?

我正在开发一个matlab程序,其中我使用多边形(凹面或凸面).我需要在多边形上使用imdilate或imerode等图像处理功能.为此,我应该将我的多边形转换为图像.我想知道是否有一种方法可以直接在二进制矩阵中绘制多边形(1为前景,0为背景)?

目前,我使用'getframe',然后'frame2im',然后使用'im2bw'函数来执行此操作.但它的缺点是我无法控制最终图像(=矩阵)的大小(即,将帧转换为图像时图像的大小,以像素为单位),因为matlab不会以像素为单位显示其图形(?).因此,每当有人在绘图上"放大"或"缩小"时,生成的矩阵(=图像)就会不同.

我的代码:

Polygon = [ 15    45    33    30  40 23 ; 9    9    24    15 13 13]';
figure(1); clf; patch(Polygon(:,1),Polygon(:,2),'black');
axis off

%convert the plot to binary image
frame = getframe(gca);
im =frame2im(frame);
level = graythresh(im);
bw = ~im2bw(im,level);

%draw the resulting image
imtool(bw)
%dilate the image
SE = strel('square',5);
bw2 = imdilate(bw,SE);

%draw the dilated image
imtool(bw2)
Run Code Online (Sandbox Code Playgroud)

matlab image-manipulation polygon image-processing

7
推荐指数
1
解决办法
5417
查看次数

为什么用Matlab而不是Fortran编写Matlab?

您可能知道,Fortran是一种科学计算语言.然而,最着名的科学计算高级语言的核心是用C而不是Fortran编写的.为什么?

c matlab fortran programming-languages

7
推荐指数
4
解决办法
1万
查看次数

如何用孔表示多边形?

使用多边形通常很受欢迎,它们的顶点在向量(2*1或1*2矩阵)中按CW或CCW排序.但是,如何在向量中描述带孔的多边形?

我将对这些多边形应用各种过程,所以我想要一种表示我可以轻松或有效地工作的方法.(即如何在我的程序中声明那种多边形以便简化我的算法?)

多边形是2D,我在MATLAB中编程.

编辑1:我将计算这些多边形的可见性图(有或没有孔).

matlab polygon

7
推荐指数
1
解决办法
8780
查看次数

这是MSDN中的错误代码吗?

我在MSDN(这里)中发现以下代码似乎是错误的(编译时错误).不是吗?

delegate void D(int x);
class C
{
   public static void M1(int i) {...}
   public void M2(int i) {...}
}
class Test
{
   static void Main() { 
      D cd1 = new D(C.M1);      // static method
      Test t = new C();         // <---- WRONG-------
      D cd2 = new D(t.M2);      // instance method
      D cd3 = new D(cd2);      // another delegate
   }
}
Run Code Online (Sandbox Code Playgroud)

考虑这一行:

Test t = new C();
Run Code Online (Sandbox Code Playgroud)

C类不是从Test类派生的,因此这个赋值不会编译.我在这里遗漏了一些东西(我在文章中没有考虑过一些假设吗?)

即使C类派生自Test,以下行也会出错:

D cd2 = new D(t.M2);
Run Code Online (Sandbox Code Playgroud)

不是吗?

c# msdn

7
推荐指数
1
解决办法
159
查看次数

逆时针从V1到V2时,如何判断V3是否介于V1和V2之间?

我有三个向量V1,V2和V3.它们的起点是轴的起源.当我从V1逆时针移动到V2时,如何确定V3是否介于V1和V2之间?

alt text http://www.freeimagehosting.net/uploads/1448ea8896.jpg

无法通过获取角度和评估这些条件(伪代码)来完成:

if angle(V3) > angle(V1) && angle(V3) < angle(V2) 
   printf("V3 is between V1 and V2") 
else 
   printf("out of the interval")
Run Code Online (Sandbox Code Playgroud)

为了看到它的缺陷,假设该angle函数给出了[-pi pi]范围内的角度.因此,如果角度(V1)= 120(度),角度(V2)= -130,角度(V3)= 150,那么答案(根据上面的代码)是"超出间隔",但如果你四处走动逆时针从V1到V2,它们介于它们之间.

您可能建议将2*pi添加到角度(V2)或类似的东西,但我已经尝试过这样的东西而且它不起作用.

我在MATLAB中编程.

编辑1:它是2D.

matlab geometry vector angle

6
推荐指数
1
解决办法
2233
查看次数

LabVIEW:机械动作"Latch until released"和"Switch to released"之间有什么区别?

在哪种情况下我们应该使用"Latch until released"而不是"Switch to released"?

根据LabVIEW 2011帮助:

锁存直到释放 - 单击它时更改控制值并保留该值直到VI读取一次或释放鼠标按钮,具体取决于最后一个出现的那个.您无法为单选按钮控件选择此行为.

切换直到释放 - 单击它时更改控制值并保留新值,直到释放鼠标按钮.此时,控制恢复到其默认值,类似于门蜂鸣器的操作.VI读取控件的频率不会影响此行为.您无法为单选按钮控件选择此行为.

labview

6
推荐指数
1
解决办法
1万
查看次数

微软是否有类似 Google BigQuery 的产品?

我想看看微软是否提供类似谷歌 BigQuery 的服务。

我想在大约 15GB 的数据库上运行一些查询,并且我希望该服务在云上。

PS:是的。我已经谷歌了,但没有找到类似的东西。

database google-bigquery

6
推荐指数
1
解决办法
5181
查看次数

如何从另一个类调用VRInput类事件(OnClick,OnDoubleClick,...)?

我正在为我的游戏添加重播功能.有了这个功能,我可以捕获用户对游戏的输入并稍后将它们反馈给Unity以重放游戏.但是VRStandardAssets.Utils.VRInput类的设计阻止了我模仿用户输入.

此类不提供任何公共方法,以便以编程方式触发其事件(例如OnClick或OnDoubleClick事件).所以我决定从它创建一个派生类,并编写我自己的公共方法来触发事件.此策略失败,因为VRInput的方法是私有的意思,我不能从派生类调用它们.

建议这类类提供受保护的虚拟void On [eventName](subclassOfEventArgs e)方法,以便为派生类提供一种使用覆盖来处理事件的方法,但是这个类没有它(为什么这么限制? ).我猜这是Unity的糟糕设计.这种糟糕的设计也使得编写单元/集成测试变得困难.

我在这里错过了什么吗?在重放游戏时,我还能做些什么来欺骗其他类认为他们正在处理VRInput类吗?

c# design-patterns unity-game-engine virtual-reality

6
推荐指数
1
解决办法
246
查看次数

将 Unity 脚本附加到游戏对象时出错

当我尝试将脚本附加到游戏对象时出现错误。

“EnemyBehaviour”缺少类属性“ExtensionOfNativeClass”!

还有一次,我得到:

无法添加脚本行为 CallbackExecutor。脚本需要从 Monobehaviour 派生!

我已经确定我的类来自 MonoBehaviour。

unity-game-engine

6
推荐指数
2
解决办法
6157
查看次数

在MATLAB中标记某些元素的最佳方法是什么?使用NaN还是Inf?或者是其他东西?

您可能知道,在许多情况下,需要标记矩阵的某些元素.例如,当我们有加权邻接矩阵,并且我们的图形没有完全连接时,我们必须标记一些元素以表明这些节点之间没有边缘.问题是如何做到这一点?将NaN或Inf放在矩阵中的元素上会更好吗?或其他东西(如-1)?

matlab

5
推荐指数
1
解决办法
995
查看次数