{"id":6264,"date":"2014-09-12T00:36:19","date_gmt":"2014-09-11T15:36:19","guid":{"rendered":"http:\/\/www.moonmile.net\/blog\/?p=6264"},"modified":"2014-09-12T08:12:32","modified_gmt":"2014-09-11T23:12:32","slug":"opencvsharp-%e3%82%92-f-%e3%81%8b%e3%82%89%e4%bd%bf%e3%81%a3%e3%81%a6%e3%82%ab%e3%83%a1%e3%83%a9%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3%e3%81%99%e3%82%8b","status":"publish","type":"post","link":"http:\/\/www.moonmile.net\/blog\/archives\/6264","title":{"rendered":"F#\u3067OpenCvSharp\u3092\u4f7f\u3063\u3066\u30ab\u30e1\u30e9\u30ad\u30e3\u30d7\u30c1\u30e3\u3059\u308b"},"content":{"rendered":"<p>\nOpenCvSharp \u3092\u4f7f\u3063\u3066\u30ab\u30e1\u30e9\u30ad\u30e3\u30d7\u30c1\u30e3\u3092\u3059\u308b | Moonmile Solutions Blog<br \/>\n<a href=\"http:\/\/www.moonmile.net\/blog\/archives\/6258\">http:\/\/www.moonmile.net\/blog\/archives\/6258<\/a>\n<\/p>\n<p>\n\u306e F# \u7248\u3067\u3059\u3002WPF \u3067\u4f5c\u3063\u3066\u3042\u308a\u307e\u3059\u3002\n<\/p>\n<pre class=\"brush: vb; title: ; notranslate\" title=\"\">\r\nmodule MainApp\r\n\r\nopen System\r\nopen System.Windows\r\nopen System.Windows.Controls\r\nopen FsXaml\r\nopen OpenCvSharp.CPlusPlus\r\nopen OpenCvSharp.Extensions\r\n\r\ntype MainWindow = XAML&lt;&amp;quot;MainWindow.xaml&amp;quot;&gt;\r\n\r\nlet mutable _frame:Mat = null\r\n\r\n\/\/\/ &lt;summary&gt;\r\n\/\/\/ \u30ab\u30e1\u30e9\u3092\u8868\u793a\r\n\/\/\/ &lt;\/summary&gt;\r\n\/\/\/ &lt;param name=&amp;quot;id&amp;quot;&gt;&lt;\/param&gt;\r\nlet camera(id:int) =\r\n    let cap = new VideoCapture()\r\n    cap.Open(id)\r\n    if cap.IsOpened() then\r\n        let fs = FrameSource.CreateCameraSource(0)\r\n        let win = new Window(&amp;quot;camera&amp;quot;)\r\n        let frame = new Mat()\r\n        _frame &lt;- frame\r\n        let mutable loop = true\r\n        while loop do\r\n            cap.Read( frame )\r\n            if frame.Empty() = false then\r\n                win.ShowImage( frame )\r\n                let key = Cv2.WaitKey(100)\r\n                if key = 27 then\r\n                    loop &lt;- false\r\n            else\r\n                loop &lt;- false\r\n\r\nlet loadWindow() =\r\n   let window = MainWindow().CreateRoot()\r\n   let accessor = MainWindow.Accessor(window)\r\n   \/\/ \u30dc\u30bf\u30f3\u30af\u30ea\u30c3\u30af\u6642\u306e\u30a4\u30d9\u30f3\u30c8\r\n   accessor.btnCamera.Click.Add( fun e -&gt; camera(0) )\r\n   accessor.btnCapture.Click.Add( fun e -&gt; \r\n        accessor.img.Source &lt;- WriteableBitmapConverter.ToWriteableBitmap(_frame)\r\n       )\r\n   \/\/ \u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u8fd4\u3059\r\n   window\r\n\r\n&#x5B;&lt;STAThread&gt;]\r\n(new Application()).Run(loadWindow()) |&gt; ignore\r\n<\/pre>\n<p><a href='http:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2014\/09\/wpid-dworkblogimage20140912_01org.jpg'><img border='0' src='http:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2014\/09\/wpid-dworkblogimage20140912_01thum.jpg'\/><\/a><\/p>\n<p>\n\u3084\u3063\u3066\u3044\u308b\u3053\u3068\u306f\u3001C# \u7248\u3068\u540c\u3058\u3067\u3001\u30ab\u30e1\u30e9\u7528\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u958b\u304f\u306e\u3068\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u305f\u3068\u304d\u306b\u30ad\u30e3\u30d7\u30c1\u30e3\u3059\u308b\u51e6\u7406\u304c\u5165\u3063\u3066\u3044\u307e\u3059\u3002\u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58\u3059\u308b\u51e6\u7406\u306f\u307b\u3068\u3093\u3069\u540c\u3058\u306a\u306e\u3067\u7701\u7565\u3002\n<\/p>\n<p>\nF# \u3067 WPF \u3092\u6271\u3046\u3068\u304d\u306f FsXaml \u306e\u30bf\u30a4\u30d7\u30d7\u30ed\u30d0\u30a4\u30c0\u3092\u4f7f\u3044\u307e\u3059\u3002\u30dc\u30bf\u30f3\u30a4\u30d9\u30f3\u30c8\u3068\u304b\u306f\u30dc\u30bf\u30f3\u81ea\u8eab\u306b\u540d\u524d\u3092\u4ed8\u3051\u3066 Add.Click \u7b49\u3067\u8ffd\u52a0\u3059\u308c\u3070 ok.<br \/>\n\u30d5\u30a9\u30fc\u30e0\u306e\u5834\u5408\u306f Bitmap \u306b\u843d\u3068\u3059\u306e\u306b BitmapConverter.ToBitmap \u3092\u4f7f\u3044\u307e\u3059\u304c\u3001WPF \u306e Image.Source \u306b\u5bfe\u3057\u3066\u306f WriteableBitmapConverter.ToWriteableBitmap \u3092\u4f7f\u3063\u3066 Mat \u304b\u3089 WritableBitmap \u306b\u843d\u3068\u3057\u307e\u3059\u3002<br \/>\nMat \u3068 Bitmap \u306e\u76f8\u4e92\u5909\u63db\u3068\u3001float\/double \u3067\u51e6\u7406\u3057\u305f\u81ea\u524d\u306e Pixcels \u30af\u30e9\u30b9\u3092\u4f7f\u3048\u3070\u3001\u753b\u50cf\u89e3\u6790\u306e\u30c8\u30e9\u30a4\u30a2\u30f3\u30c9\u30a8\u30e9\u30fc\u304c\u3057\u3084\u3059\u3044\u304b\u306a\u3068\u3001\u596e\u95d8\u4e2d\u3067\u3059\u3002\u3082\u3046\u5c11\u3057\u3067\u304d\u305f\u3089 github \u306b\u3067\u3082\u3002\n<\/p>\n<p>\n\u3072\u3068\u307e\u305a\u3001\u52d5\u4f5c\u30b5\u30f3\u30d7\u30eb\u306f\u3053\u3061\u3089\u3002\u76f4\u3050\u52d5\u304f\u3088\u3046\u306b opencv \u306e dll \u3082\u542b\u3093\u3067\u3044\u308b\u306e\u3067\u3061\u3087\u3063\u3068\u5927\u304d\u3044\u3067\u3059\u3002\n<\/p>\n<p>\n<iframe loading=\"lazy\" src=\"https:\/\/onedrive.live.com\/embed?cid=1709CDA2BB05E665&#038;resid=1709CDA2BB05E665%2122914&#038;authkey=AFxskUKlPFlThxs\" width=\"98\" height=\"120\" frameborder=\"0\" scrolling=\"no\"><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>OpenCvSharp \u3092\u4f7f\u3063\u3066\u30ab\u30e1\u30e9\u30ad\u30e3\u30d7\u30c1\u30e3\u3092\u3059\u308b | Moonmile Solutions Blog http:\/\/www.moonmile.net\/blog\/archives\/6258 \u306e F# \u7248\u3067\u3059\u3002WPF  &hellip; <a href=\"http:\/\/www.moonmile.net\/blog\/archives\/6264\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[59,35],"tags":[],"class_list":["post-6264","post","type-post","status-publish","format-standard","hentry","category-f","category-opencv"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/6264","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/comments?post=6264"}],"version-history":[{"count":4,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/6264\/revisions"}],"predecessor-version":[{"id":6268,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/6264\/revisions\/6268"}],"wp:attachment":[{"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/media?parent=6264"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/categories?post=6264"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/tags?post=6264"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}