日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

单个手指的手势识别

發布時間:2024/7/19 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单个手指的手势识别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文來自http://blog.csdn.net/hellogv/ ,引用必須注明出處!

?????? 本文把Aforge的運動識別與前面介紹的手寫識別融合在一起,實現單個手指的手勢識別。下圖演示了本文代碼運行的結果,圖片有點大,請稍候。。。

?

?????? 我預先讓程序學習了B和C這兩個字母,然后通過手指的手勢識別向程序繪畫圖形,所以點擊recorgize時,就自動把圖形的特征對應的字母給識別出來了。

????? 這個例子關鍵部分在于如何靈活運用Aforge的運動識別,如何判斷是要畫圖,還是普通的移來移去呢?在這里,我判斷移動對象的大小,當突然面積增大(即兩個指套合并)則開始繪圖(手勢識別的開始),當拆開再合并則為解除繪圖(手勢識別的結束),說白了就是用一個當前狀態=!當前狀態去做。

????? 本文的代碼可以到這里下載:http://download.csdn.net/source/2313846

????? 下面貼出運動判斷的核心代碼:

[c-sharp] view plaincopyprint?
  • privatevoid videoSourcePlayer1_NewFrame( object sender, ref Bitmap image )?
  • {?
  • ??? nowImg = (Bitmap)image.Clone();?
  • ?
  • ??? Bitmap objectImage = colorFilter.Apply( image );?
  • ?
  • ??? // lock image for further processing ?
  • ??? BitmapData objectData = objectImage.LockBits( new Rectangle( 0, 0, image.Width, image.Height ),?
  • ??????? ImageLockMode.ReadOnly, image.PixelFormat );?
  • ?
  • ??? // grayscaling ?
  • ??? UnmanagedImage grayImage = grayFilter.Apply( new UnmanagedImage( objectData ) );?
  • ?
  • ??? // unlock image ?
  • ??? objectImage.UnlockBits( objectData );?
  • ?
  • ??? // locate blobs? ?
  • ??? blobCounter1.ProcessImage( grayImage );?
  • ??? List<Rectangle> rects = new List<Rectangle>();?
  • ??? rects.AddRange(blobCounter1.GetObjectsRectangles());?
  • ?
  • ??? if ( rects.Count >0 )?
  • ??? {
  • ??????? #region 去掉內部和黏在一起的對象 ?
  • ??????? for (int i = 0; i < rects.Count - 1; i++)?
  • ??????? {?
  • ??????????? //true表示X軸上不能相交,false表示相交 ?
  • ??????????? Boolean isNoTouchX = Math.Max(rects[i + 1].Right , rects[i].Right) - Math.Min(rects[i + 1].Left ,rects[i].Left) > (rects[i].Width + rects[i + 1].Width);?
  • ??????????? //true表示Y軸上不能相交,false表示相交 ?
  • Boolean isNoTouchY = Math.Max(rects[i + 1].Bottom, rects[i].Bottom) - Math.Min(rects[i + 1].Top, rects[i].Top) > (rects[i].Height + rects[i + 1].Height);
  • ??????????? if (isNoTouchX == false && isNoTouchY == false)//如果兩個對象相交 ?
  • ??????????? {?
  • ??????????????? Rectangle rect = new Rectangle(Math.Min(rects[i].Left, rects[i + 1].Left),?
  • ??????????????????? Math.Min(rects[i].Top, rects[i + 1].Top),?
  • ??????????????????? Math.Max(rects[i].Right, rects[i + 1].Right) - Math.Min(rects[i].Left, rects[i + 1].Left),?
  • ??????????????????? Math.Max(rects[i].Bottom, rects[i + 1].Bottom) - Math.Min(rects[i].Top, rects[i + 1].Top));?
  • ??????????????? rects.RemoveAt(i + 1);?
  • ??????????????? rects.RemoveAt(i);?
  • ?
  • ??????????????? rects.Add(rect);?
  • ??????????????? i = 0;?
  • ??????????? }?
  • ??????? }
  • ??????? #endregion
  • ??????? #region 畫出表示點 ?
  • ??????? Rectangle objectRect = rects[0];?
  • ?
  • ??????? int oldSize=oldRect.Width+oldRect.Height;?
  • ??????? int nowSize=rects[0].Width+rects[0].Height;?
  • ?
  • ??????? if (nowSize > (oldSize * 1.2))//如果突然變大,即兩個指套合并 ?
  • ??????? {?
  • ??????????? isCapture =!isCapture;?
  • ??????????? clsHandWrite.Clear();?
  • ??????? }?
  • ?
  • ??????? Graphics g = Graphics.FromImage(image);?
  • ?
  • ??????? if (isCapture)//如果捕捉到對象 ?
  • ??????? {?
  • ??????????? Pen pen = new Pen(Color.FromArgb(255, 0, 0), 3);?
  • ??????????? g.DrawRectangle(pen, objectRect);?
  • ??????????? int x = (objectRect.Left + objectRect.Width / 2) * pbDraw.Width / videoSourcePlayer1.Width;?
  • ??????????? int y = (objectRect.Top + objectRect.Height / 2) * pbDraw.Height / videoSourcePlayer1.Height;?
  • ??????????????????? clsHandWrite.Draw(x,y );?
  • ??????? }?
  • ??????? else//如果沒有捕捉到對象 ?
  • ??????? {?
  • ??????????? Pen pen = new Pen(Color.FromArgb(160, 255, 160), 3);?
  • ??????????? g.DrawRectangle(pen, objectRect);?
  • ??????? }?
  • ?
  • ??????? g.Dispose();
  • ???
  • ??????? #endregion ?
  • ?
  • ??????? oldRect = rects[0];?
  • ?????????
  • ??? }?
  • ?
  • ??? UpdateObjectPicture(objectImage );?
  • ?????
  • }?
  • 轉載于:https://www.cnblogs.com/tiandile/archive/2013/03/12/2956375.html

    總結

    以上是生活随笔為你收集整理的单个手指的手势识别的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 四川丰满少妇被弄到高潮 | 中文字幕11页中文字幕11页 | 流白浆视频 | 久久国产黄色片 | 亚洲专区中文字幕 | 女生抠逼视频 | 国产精品久久久免费观看 | 免费看日韩 | 欧美丝袜脚交 | 日韩尤物 | 影音先锋日韩资源 | 日韩 国产 欧美 | av在线播放器 | 国产精品亚洲天堂 | 亚洲av毛片基地 | 亚洲激情图片 | 激情啪啪网站 | 午夜天堂在线 | 不许穿内裤随时挨c调教h苏绵 | 全部毛片永久免费看 | 少妇特黄a一区二区三区 | 怡红院男人的天堂 | 在线观看欧美一区二区三区 | 久久人人爽人人 | 欧美a级黄色 | 乐播av一区二区三区 | 我把护士日出水了视频90分钟 | 国语久久| 中文无码av一区二区三区 | 午夜福利电影一区二区 | 极品色av| 越南毛茸茸的少妇 | 手机看片日韩 | 亚洲成人黄色片 | 在线精品观看 | 亚洲视频1区 | 不卡二区| 韩国成人在线视频 | 一曲二曲三曲在线观看中文字幕动漫 | 成人一区二区三区仙踪林 | 色片网站在线观看 | 国产午夜毛片 | 欧美性生活一区 | 无码人妻少妇色欲av一区二区 | 欧美偷拍另类 | av免费资源 | 毛片的网址| 久久精品国产亚洲AV成人雅虎 | 黄瓜视频污在线观看 | 国产精品久久9 | 香蕉伊思人视频 | 亚洲一线av | 亚洲一区二区成人 | 成人综合色站 | 天天操天天干天天插 | 九一九色国产 | 亚洲色图综合网 | 看特级黄色片 | 香蕉国产在线视频 | 26uuu精品一区二区在线观看 | 久久黑人 | 色婷婷欧美 | 激情四射网站 | 成人一级黄色片 | 亚洲好骚综合 | 爱的天堂| 美女久久久 | 日韩欧美国产片 | 奇米激情 | 999色综合 | 99精品视频一区二区 | 中文字幕国产在线 | 污污网站免费在线观看 | 综合色99 | 久久怡红院 | 99ri国产在线 | 公肉吊粗大爽色翁浪妇视频 | 毛片看看 | 乱亲女h秽乱长久久久 | 天海翼视频在线观看 | 日韩一区二区三区在线观看视频 | 好屌妞视频这里有精品 | 欧美日韩亚洲激情 | 激情一区二区 | 国产草逼视频 | 成人颜色网站 | 一本色道久久综合熟妇 | 久久久午夜精品福利内容 | 国产综合av | 久久精品小视频 | 国产乱码在线观看 | 欧洲精品视频在线 | 中文字幕日韩欧美一区二区 | 秋霞福利影院 | 男人的天堂网av | 日本精品在线观看视频 | 深夜福利成人 | 丁香啪啪综合成人亚洲 | 亚洲第一天堂av |