e@Board

专注WPF、SWT、Java、TUIO、lua、电子白板软件研发、多点触摸算法、跟踪算法、视频会议、触摸一体机、红外触控、触摸框架、数字图像处理研究
posts - 17, comments - 37, trackbacks - 0, articles - 1

置顶随笔

摘要: 玩过phtoshop或者blend的人都知道里面都一个图层管理器,管理图层的遮挡顺序,有置顶层、置底层、置下一层、置上一层四个管理方式。那么在wof中我们应该怎么玩呢? 请看代码,支持多个图层同时操作。首先置顶: private void BringToFront(List<UIElement> CurrentSelection ,UIElementCollection childrens) { List<UIElement> selectionSorted = (from item in CurrentSelection ...阅读全文

posted @ 2011-08-31 10:59 kodos 阅读(1723) 评论(3) 编辑

2012年5月18日

最近在看HTML5,首次使用Image就遇到了问题;直接看代码:

<canvas width="800" height="600" id="mycanvas" style="border: 1px solid #c3c3c3;"></canvas>
<script type="text/javascript">
var can = document.getElementById("mycanvas");
var cxt = can.getContext("2d");
var img = new Image();
img.src = "cars.png";
cxt.drawImage(img, 50, 50);
</script>

 在网上查了使用drawimage的方法基本上都是类似上面代码,包过一些Html5方面的数,实际上只要一刷新图片就不显示出来。要想保证刷新正常显示需要在Image onload的时候重绘一次才行

<canvas width="800" height="600" id="mycanvas" style="border: 1px solid #c3c3c3;"></canvas>
<script type="text/javascript">
var can = document.getElementById("mycanvas");
var cxt = can.getContext("2d");

var img = new Image();
img.src = "cars.png";
img.onload = function () {
cxt.drawImage(img, 50, 50);
}
</script>

 

测试在chrome 19下

posted @ 2012-05-18 17:04 kodos 阅读(62) 评论(0) 编辑

2012年4月11日

说到这个线条平滑,可以说是走了不少弯路。最初一直以为在白板服务端使用滤波算法对白板坐标数据可以得出平滑的线条,但是由于分辨率等因素在绘画时很难得出了满意的线条。后来自己想了想,白板是实时数据,而且有抖动等各因素影响应该是比较难于得出比较光滑的线条,对此我想到了再白板软件中对线条进行平滑处理,后面以自己的数学基础,尝试了很多中曲线拟合算法,结果线条就平滑好多了。后来研究了smart的线条绘制方式,貌似与我所用算法所表现出来的类似,可能只是我们对这个算法使用的参数有点区别而已,这下我心里才有底了,至少目前线条比较柔滑。

posted @ 2012-04-11 10:45 kodos 阅读(9) 评论(0) 编辑

2012年3月21日

WPF的透明窗体在xp下有些电脑确实工作不正常,目前已经发现几台机器了,然后找到了微软的解答

http://support.microsoft.com/kb/975796

http://support.microsoft.com/kb/943326/

看来wpf 透明窗体在xp下应该慎用。

posted @ 2012-03-21 09:45 kodos 阅读(72) 评论(0) 编辑

2012年2月29日

最近在折腾语音方面的东西,所以看了下GOOGL的语音识别,经过GOOGLE发现Google的语音引擎是通过http来请求的,并且已经获取到http的地址,中文的调用Url为:http://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=zh-CN 其实一看就知道替换zh-CN 成其它语言也是可以的.那么在C#中如何调用呢,直接看代码:

/// <summary>
        /// 调用GOOLE语音识别引擎
        /// </summary>
        /// <returns></returns>
        private string GoogleSTT()
        {
            string result = string.Empty;
            try
            {
                string inFile = "audio.wav";
                FileStream fs = new FileStream(inFile, FileMode.Open);
                byte[] voice = new byte[fs.Length];
                fs.Read(voice, 0, voice.Length);
                fs.Close();
                HttpWebRequest request = null;
                string url = "http://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=zh-CN";
                Uri uri = new Uri(url);
                request = (HttpWebRequest)WebRequest.Create(uri);
                request.Method = "POST";
                request.ContentType = "audio/x-flac; rate=16000";
                request.ContentLength = voice.Length;
                using (Stream writeStream = request.GetRequestStream())
                {
                    writeStream.Write(voice, 0, voice.Length);
                }

                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                {
                    using (Stream responseStream = response.GetResponseStream())
                    {
                        using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8))
                        {
                            result = readStream.ReadToEnd();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
            return result;
        }

其实就是直接通过http请求,然后获取返回的识别结果,不过有需要注意的地方 request.ContentType = "audio/x-flac; rate=16000;这句写的不对会有影响的,google默认的是audio/x-flac的,支持flac格式,要想支持wav、mp3等格式,在网上查之后说只能通过格式转换,如果是直接提交wav文件是无法识别的;后来我在讯飞的语音识别引擎的时候发现他们的也是http的,但是他们的是可以这样写的audio/L16,然后我就尝试着把google的也改成这样,不出所料可以支持wav格式了,这只说明google是有支持的,可能只是有些参数由于google对api的封闭,我们不清楚而已。

posted @ 2012-02-29 11:44 kodos 阅读(1437) 评论(8) 编辑

2012年2月20日

此文根据http://blog.csdn.net/xiaoding133/article/details/6745981原文修改而成,只是修改了部分我们自己遇到的问题,首先下载HMM 的开发包HTK,现在的版本是3.4.1.可以从CMU的官网进行下载。

http://htk.eng.cam.ac.uk/,下载后解压HTK工具包,我解压后的目录为:D:\htk\

 确保的环境变量Path包含路径(此为本机vs2010的路径,其它版本可根据安装目录找到):C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools ,路径根据你安装所在目录作相应改变。

打开DOS 命令窗口。

 在命令窗口中输入cd htk 进入htk文件夹,在该文件夹下建立一个新文件夹bin.win32 . 

输入:mkdir bin.win32

 在DOS窗口运行vsvars32

接下来编译htk库文件:

cd  HTKLib

进入HTKLib文件夹  使用命令:

nmake /f htk_htklib_nt.mkf all 

编译该文件夹下所有的库文件。 cd ..退出该文件夹

然后

cd HTKTools

nmake /f htk_htktools_nt.mkf all

cd ..                          

cd HLMLib                      

nmake /f htk_hlmlib_nt.mkf all 

cd ..                          

cd HLMTools                    

nmake /f htk_hlmtools_nt.mkf all

cd ..                          

其他的库文件类似。 完成后,所有生成的exe文件在bin.win32文件夹中,然后将该目录加入环境变量PATH中,即可。

 

确保电脑中装有ActivePerl

运行HTKDemo中的例子:

cd HTKDemo
mkdir hmms
cd hmms
mkdir tmp
mkdir hmm.0
mkdir hmm.1
mkdir hmm.2
mkdir hmm.3
cd ..
mkdir proto
mkdir acc
mkdir test
perl runDemo.pl configs\monPlainM1S1.dcf (运行此命令时有可能提升没有HTKDemo路径的错误,如果是则把HTKDemo放到英文目录下即可)

结果如下:

该工具在Windows 下存在的一些问题:

1.默认情况下HSLab工具使用的是x11做的图形界面接口,windows不支持,所以需要修改一下生成文件,使用windows GUI。修改htk_htklib_nt.mkf(两处),将HGraf.null.obj替换为HGraf_WIN32.obj,HGraf.null.olv替换为 HGraf_WIN32.olv。
再按照上面的步骤安装即可。

posted @ 2012-02-20 14:33 kodos 阅读(234) 评论(0) 编辑

2012年2月17日

摘要: 语音识别、HTK、Google语音、讯飞语音阅读全文

posted @ 2012-02-17 16:07 kodos 阅读(87) 评论(0) 编辑

2012年1月11日

摘要: C#、豌豆荚、逆向阅读全文

posted @ 2012-01-11 10:26 kodos 阅读(2898) 评论(16) 编辑

2011年12月23日

摘要: 今天收到了来自淘宝的账号冻结邮件,第一反应就是CSDN泄露的账号信息导致的,幸好淘宝与CSDN秘密不一,淘宝里面也没有美金。如果真的有这么一个会员里面有美金,而后被人套用了呢?这笔账应该算到谁的头上呢?淘宝只是个个例,毕竟中国的网购网站多如麻。 互联网用户都习惯于使用同一账号秘密,毕竟如果每个注册网站的账号信息都不一样,一个人能记住几个?这个泄露很可能已经导致严重后果。 号称全球最大中文IT技术社区,真的太滑稽了,竟然弱智到使用明文,而且在注册的时候已经声明对隐私的保护,现在隐私已经得不到保护了,CSDN是不是应该有所赔偿。还有CSDN的声明是不是糊弄人的,淘宝都有了邮件冻结账号提示重...阅读全文

posted @ 2011-12-23 11:44 kodos 阅读(121) 评论(1) 编辑

2011年12月7日

摘要: 所谓触摸屏校准,其实就是硬件坐标转屏幕坐标的过程。最近试了下windows 7 的校准,总的感觉还可以,不过windows 7校准有个不同之处,就是单点的触摸屏跟多点的触摸屏貌似需要校准点不一样,多点的触摸屏需要16点校准,也不知道这两个方式的实现是否采用了相同的算法。 根据产品的需要最近对触摸屏的各种校准算法进行了研究:1. 过原点直线比例关系,建立过原点直线方程即y=kx(k为比例系数);k=屏幕横向(或竖向)分辨率/硬件横向分辨率(或竖向);这种方式简单,但缺点也明显,这个需要硬件的安装与屏幕的对应达到一一对应,实际上硬件在安装过程中不可能无误差2. 通过一般一次线性方程A1 *x...阅读全文

posted @ 2011-12-07 15:13 kodos 阅读(760) 评论(0) 编辑

2011年10月13日

摘要: 问题:系统为windows 7 触摸一体机,MutilTouch消息例如新建一个叫Windows1普通窗口,然后设置TopMost = true,然后添加一个image(其它类似控件也可以),给image控件加上MouseLeftDown事件,在MouseLeftDown事件中随便打开一个Form的对话框,例如打开文件对话、颜色选择对话框等: System.Windows.Forms.OpenFileDialog file = new System.Windows.Forms.OpenFileDialog(); file.Filter = "Office Docu...阅读全文

posted @ 2011-10-13 14:53 kodos 阅读(1240) 评论(7) 编辑