silverlight 4互动应用之虚拟实现

自从sl4对webcam的支持后,我并想通过webcam做一些简单的sl互动应用。经过一晚的研究,目前实现了一个简单的互动基础。

这个demo实现了:

1.通过鼠标选取摄像头内容的某一个特别的色。

2.动态查找这个色所在的位置(当这个色移动了也可以找到位置)

(可以选取你可以移动的物体的特别的颜色,达到动态跟踪这个物体)

3.我用一个四方形去跟随这个颜色的位置变化。

颜色的转换我通过以下代码实现转换:

 1:  public static Color Pixel2Color(int pixel)
 2:  {
 3:      return Color.FromArgb((byte)((pixel >> 24) & 0xff),
 4:                            (byte)((pixel >> 16) & 0xff),
 5:                            (byte)((pixel >> 8) & 0xff),
 6:                            (byte)((pixel) & 0xff));
 7:  }
 8:  
 9:  public static int Color2Pixel(Color color)
10:  {
11:      return (color.A << 24) | (color.R << 16) | (color.G << 8) | color.B;
12:  }
13:  

当用户选择颜色时,我们可以调用:

1:  Pixel2Color(lastBitmap.Pixels[(int)mousePosition.Y * lastBitmap.PixelWidth + (int)mousePosition.X]);
2:  

我们要查找这个颜色的时候可以通过递归找到这个色:

 1:  for (int y = 0; y < lastBitmap.PixelHeight; y++)
 2:  {
 3:      for (int x = 0; x < lastBitmap.PixelWidth; x++)
 4:      {
 5:          if (Color2Pixel(focusColor) == lastBitmap.Pixels[y * lastBitmap.PixelWidth + x])
 6:          {
 7:              label1.Content = x.ToString() + "," + y.ToString();
 8:              Canvas.SetLeft(silverlightControl11, x);
 9:              Canvas.SetTop(silverlightControl11, y);
10:              return;
11:          }
12:      }
13:  }
14:  

以下是一个切图:

image

posted @   黎东海  阅读(173)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示