{"id":2492,"date":"2011-11-23T00:13:18","date_gmt":"2011-11-22T06:13:18","guid":{"rendered":"http:\/\/www.moonmile.net\/blog\/archives\/2492"},"modified":"2011-11-24T16:23:58","modified_gmt":"2011-11-24T07:23:58","slug":"opencv%e3%83%86%e3%83%b3%e3%83%97%e3%83%ac%e3%83%bc%e3%83%88%e3%83%9e%e3%83%83%e3%83%81%e3%83%b3%e3%82%b0%e3%81%a8%e4%bd%8e%e8%a7%a3%e5%83%8f%e5%ba%a6%e5%8c%96%e3%81%a7%e3%80%81%e9%a7%92%e3%82%92","status":"publish","type":"post","link":"https:\/\/www.moonmile.net\/blog\/archives\/2492","title":{"rendered":"OpenCV\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30de\u30c3\u30c1\u30f3\u30b0\u3068\u4f4e\u89e3\u50cf\u5ea6\u5316\u3067\u3001\u99d2\u3092\u691c\u51fa\u3059\u308b"},"content":{"rendered":"<p>OpenCV \u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30de\u30c3\u30c1\u3092\u4f7f\u3063\u3066\u99d2\u3092\u691c\u51fa | Moonmile Solutions Blog<br \/>\n<a href=\"http:\/\/www.moonmile.net\/blog\/archives\/2468\">http:\/\/www.moonmile.net\/blog\/archives\/2468<\/a><\/p>\n<p>\u306e\u7d9a\u304d\u3067\u3059\u3002<\/p>\n<p>\u5148\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30de\u30c3\u30c1\u30f3\u30b0\u304c\u9045\u304b\u3063\u305f\u539f\u56e0\u306f\u30012 \u3064\u3042\u3063\u3066\u3001<\/p>\n<ul>\n<li>cv::matchTemplate \u3092\u547c\u3073\u51fa\u3057\u3066\u3001MaxMin \u3092\u691c\u7d22\u3057\u305f\u5f8c\u306b\u3001\u518d\u3073 cv::matchTemplate \u3092\u547c\u3073\u51fa\u3057\u3066\u3044\u308b\u306e\u304c\u7121\u99c4\u3002<\/li>\n<li>\u5143\u753b\u50cf\u3092\u305d\u306e\u307e\u307e\u30de\u30c3\u30c1\u30f3\u30b0\u5bfe\u8c61\u306b\u3057\u3066\u3044\u308b\u306e\u3067\u3001\u4f4e\u89e3\u50cf\u5ea6\u306b\u3059\u308c\u3070\u65e9\u304f\u306a\u308b\uff1f<\/li>\n<\/ul>\n<p>\u3063\u3066\u3068\u3053\u308d\u3067\u3059\u3002<\/p>\n<p>\u524d\u8005\u306e cv::matchTemplate \u306e\u591a\u91cd\u547c\u3073\u51fa\u3057\u306f\u5b8c\u5168\u306b\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u30df\u30b9\u3067\u3059\u306d\u300250 \u500b\u306e max \u3092\u53d6\u308b\u306e\u306b\u3001\u3044\u3061\u3044\u3061 cv::matchTemplate \u3092\u547c\u3073\u51fa\u3059\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u4e00\u56de\u3060\u3051\u547c\u3073\u51fa\u3057\u3066\u3001\u305d\u306e\u7d50\u679c\u306e\u753b\u50cf\u3092\u4f7f\u3063\u3066 50 \u500b\u306e max \u3092 cv::minMaxLoc \u3067\u53d6\u5f97\u3059\u308c\u3070\u826f\u3044\u306e\u3067\u3059\u3001\u3053\u308c\u3067\u7d50\u69cb\u901f\u304f\u306a\u308a\u307e\u3059\u3002<\/p>\n<p>\u5f8c\u8005\u306e\u4f4e\u89e3\u50cf\u5ea6\u5316\u306e\u307b\u3046\u306f\u3001\u4ee5\u524d\u304b\u3089\u8003\u3048\u3066\u3044\u3066\u3001\u9ad8\u89e3\u50cf\u5ea6\u306e\u307e\u307e\u30de\u30c3\u30c1\u30f3\u30b0\u3092\u3057\u3066\u691c\u51fa\u3057\u3088\u3046\u3068\u3059\u308b\u3068\u3001<strong>\u7d30\u304b\u3044\u90e8\u5206\u306b\u654f\u611f\u306b\u306a\u3063\u3066\u3057\u307e\u3046<\/strong>\u3068\u3044\u3046\u73fe\u8c61\u304c\u767a\u751f\u3057\u307e\u3059\u3002\u7d30\u304b\u3044\u3068\u3053\u308d\u3068\u3044\u3046\u306e\u306f\u3001\u53d6\u5f97\u753b\u50cf\u306e\u30ce\u30a4\u30ba\u3067\u3042\u3063\u305f\u308a\u3001\u5fae\u5999\u306a\u624b\u632f\u308c\u3067\u3042\u3063\u305f\u308a\u3001\u6559\u5e2b\u753b\u50cf\uff08\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30de\u30c3\u30c1\u3067\u898b\u3064\u3051\u308b\u753b\u50cf\uff09\u306e\u9055\u3044\u306b\u3088\u3063\u3066\u30b9\u30b3\u30a2\u304c\u5927\u304d\u304f\u7570\u306a\u308b\u3001\u3068\u3044\u3046\u73fe\u8c61\u3067\u3059\u3002\u3053\u306e\u305f\u3081\u306b\u3001\u5e73\u6ed1\u5316\u304c\u884c\u308f\u308c\u308b\u3053\u3068\u304c\u591a\u3044\u306e\u3067\u3059\u304c\u3001\u308f\u3056\u308f\u3056\u9ad8\u89e3\u50cf\u5ea6\u3067\u3042\u308b\u3082\u306e\u3092\u5e73\u6ed1\u5316\u3057\u3066\u3057\u3066\u3057\u307e\u3046\u306e\u306f\u3069\u3046\u304b\u306a\u3041\u3001\u3068\u601d\u3063\u3066\u3044\u305f\u306e\u3067\u3001\u5b9f\u9a13\u3057\u3066\u3044\u307e\u3059\u3002\u5e73\u6ed1\u5316\u3092\u884c\u3046\u306e\u3067\u306f\u306a\u304f\u3001\u5358\u7d14\u306b\u4f4e\u89e3\u50cf\u5316\u3057\u307e\u3059\u3002\u4f4e\u89e3\u50cf\u5ea6\u306b\u3059\u308b\u3068\u304d\u306f\u3001\u3068\u306a\u308a\u306e\u30c9\u30c3\u30c8\u306e\u5e73\u5747\u5024\u3092\u53d6\u308b&#8230;\u3088\u3046\u306a\u3053\u3068\u306f\u305b\u305a\u3001\u5358\u7d14\u306b\u9593\u5f15\u304d\u307e\u3059\u3002\u9593\u5f15\u3044\u3066\u3057\u307e\u3046\u3068\u3001\u5b9f\u306f\u30ce\u30a4\u30ba\u306b\u654f\u611f\u306b\u306a\u3063\u3066\u3057\u307e\u3046\u3068\u3044\u3046\u4e0d\u5229\u304c\u50cd\u304f<strong>\u53ef\u80fd\u6027<\/strong>\u304c\u3042\u308b\u306e\u3067\u3059\u304c\u3001\u305d\u306e\u3042\u305f\u308a\u304c\u9ad8\u901f\u5316\u3092\u512a\u5148\u3057\u3066&#8230;\u3068\u3044\u3046\u304b\u3001\u5b9f\u969b\u306b\u76ee\u304b\u3089\u5165\u308b\u60c5\u5831\u3092\u305d\u306e\u307e\u307e\u4f7f\u3046\u3001\u3068\u3044\u3046\u65b9\u91dd\u3067\u3044\u304d\u307e\u3059\u3002<\/p>\n<p>\u3067\u3001\u3056\u3063\u3068\u66f8\u3044\u305f\u30b3\u30fc\u30c9\u304c\u3053\u3093\u306a\u611f\u3058\u3002<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include &quot;stdafx.h&quot;\r\n#include &lt;iostream&gt;\r\n#include &quot;opencv\/cv.h&quot;\r\n#include &quot;opencv\/highgui.h&quot;\r\nusing namespace std;\r\n\r\n\/\/\/ \u4f4e\u89e3\u50cf\u5ea6\u30af\u30e9\u30b9\r\nclass RowReso\r\n{\r\nprivate:\r\n\tcv::Mat *_org_img;\r\n\tcv::Mat *_reso_img;\r\n\tcv::Mat *_reso_org;\r\n\r\n\tint _reso ;\r\n\tint _reso_width ;\r\n\tint _reso_height ;\r\n\r\npublic:\r\n\tRowReso()\r\n\t{\r\n\t\t_org_img = NULL;\r\n\t\t_reso_img = NULL;\r\n\t\t_reso_org = NULL;\r\n\t}\r\n\t~RowReso()\r\n\t{\r\n\t\tif ( _reso_img != NULL ) delete _reso_img;\r\n\t\tif ( _reso_org != NULL ) delete _reso_org;\r\n\t}\r\n\r\n\t\/\/ \u521d\u671f\u5316\r\n\tvoid Initialize( cv::Mat&amp; img, int reso )\r\n\t{\r\n\t\tint width  = img.cols \/ reso;\r\n\t\tint height = img.rows \/ reso;\r\n\r\n\t\t_org_img = &amp;img ;\r\n\t\t_reso_img = new cv::Mat(height, width, CV_MAKETYPE(img.depth(),img.channels()));\r\n\t\t_reso = reso ;\r\n\t\t_reso_width = width ;\r\n\t\t_reso_height = height ;\r\n\t}\r\n\t\/\/ \u4f4e\u89e3\u50cf\u5ea6\u3092\u4f5c\u6210\r\n\tcv::Mat&amp; Do()\r\n\t{\r\n\t\tfor ( int y=0; y&lt;_reso_height; ++y ) {\r\n\t\t\tfor ( int x=0; x&lt;_reso_width; ++x ) {\r\n\t\t\t\tint x1 = (_reso+1)\/2 + _reso*x;\r\n\t\t\t\tint y1 = (_reso+1)\/2 + _reso*y;\r\n\t\t\t\tcv::Vec3b &amp;v = _org_img-&gt;at&lt;cv::Vec3b&gt;(y1,x1);\r\n\t\t\t\t\/\/ cout &lt;&lt; x &lt;&lt; &quot;,&quot; &lt;&lt; y &lt;&lt; endl;\r\n\t\t\t\t_reso_img-&gt;at&lt;cv::Vec3b&gt;(y,x) = v;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn *_reso_img;\r\n\t}\r\n\t\/\/ \u78ba\u8a8d\u7528\u306b\u5143\u306e\u753b\u50cf\u306e\u5927\u304d\u3055\u306b\u623b\u3059\r\n\tcv::Mat&amp; GetOriginalSize()\r\n\t{\r\n\t\tif ( _reso_org == NULL ) {\r\n\t\t\t_reso_org = new cv::Mat(\r\n\t\t\t\t_org_img-&gt;rows, _org_img-&gt;cols,\r\n\t\t\t\tCV_MAKETYPE(_org_img-&gt;depth(),_org_img-&gt;channels()));\r\n\t\t}\r\n\t\tfor ( int y=0; y&lt;_reso_height; ++y ) {\r\n\t\t\tfor ( int x=0; x&lt;_reso_width; ++x ) {\r\n\t\t\t\tcv::Vec3b &amp;v = _reso_img-&gt;at&lt;cv::Vec3b&gt;(y,x);\r\n\t\t\t\tfor ( int y1=0; y1&lt;_reso; ++y1 ) {\r\n\t\t\t\t\tfor ( int x1=0; x1&lt;_reso; ++x1 ) {\r\n\t\t\t\t\t\t_reso_org-&gt;at&lt;cv::Vec3b&gt;(y*_reso+y1,x*_reso+x1) = v ;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn *_reso_org;\r\n\t}\r\n};\r\n\r\nint main2(int argc, char **argv );\r\n\r\nint main(int argc, char **argv )\r\n{\r\n\tif ( argc == 2 ) {\r\n\t\tmain2( argc, argv );\r\n\t\treturn 0;\r\n\t}\r\n\tcv::VideoCapture cap;\r\n\tcap.open(0);\r\n\tcap.set( CV_CAP_PROP_FRAME_WIDTH, 640 );\r\n\tcap.set( CV_CAP_PROP_FRAME_HEIGHT, 480 );\r\n\r\n  \tcv::namedWindow(&quot;camera&quot;, CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO);\r\n  \tcv::namedWindow(&quot;reso&quot;, CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO);\r\n  \tcv::namedWindow(&quot;reso org&quot;, CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO);\r\n  \tcv::namedWindow(&quot;reso koma&quot;, CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO);\r\n\r\n\tchar fname&#x5B;256];\r\n\tcv::Mat img_koma&#x5B;7];\r\n\tfor ( int i=0; i&lt;7; i++ ) {\r\n\t\tsprintf( fname, &quot;D:\\\\work\\\\OpenCV\\\\src\\\\mini\\\\koma%02d.png&quot;, i+1 );\r\n\t\timg_koma&#x5B;i] = cv::imread(fname);\r\n\t}\r\n\r\n\t\/\/ \u521d\u56de\u3060\u3051\u8aad\u307f\u8fbc\u3080\r\n\tcv::Mat img;\r\n\tcap &gt;&gt; img ;\r\n\r\n\tint reso = 3 ;\r\n\tRowReso Reso, ResoKoma&#x5B;7];\r\n\tReso.Initialize( img, reso );\r\n\tcv::Mat img_reso_komas&#x5B;7];\r\n\tfor ( int i=0; i&lt;7; i++ ) {\r\n\t\tResoKoma&#x5B;i].Initialize( img_koma&#x5B;i], reso );\r\n\t\t\/\/ \u4f4e\u89e3\u50cf\u5ea6\u306e\u6559\u5e2b\u753b\u50cf\r\n\t\timg_reso_komas&#x5B;i] = ResoKoma&#x5B;i].Do();\r\n\t}\r\n\r\n\t\/\/ \u67a0\u7dda\u306e\u8272\r\n\tcv::Scalar cols&#x5B;7];\r\n\tcols&#x5B;0] = cv::Scalar(0,0,255);\r\n\tcols&#x5B;1] = cv::Scalar(0,255,255);\r\n\tcols&#x5B;2] = cv::Scalar(255,0,255);\r\n\tcols&#x5B;3] = cv::Scalar(255,0,0);\r\n\tcols&#x5B;4] = cv::Scalar(0,255,0);\r\n\tcols&#x5B;5] = cv::Scalar(255,255,0);\r\n\tcols&#x5B;6] = cv::Scalar(255,255,255);\r\n\r\n\twhile ( 1 ) {\r\n\t\tcap &gt;&gt; img ;\r\n\r\n\t\tcv::Mat &amp;img_reso = Reso.Do();\r\n\t\tcv::Mat &amp;img_reso_org = Reso.GetOriginalSize();\r\n\r\n\t\tcv::Mat img_search, img_result ;\r\n\t\timg_reso.copyTo( img_search );\r\n\r\n\t\tfor ( int j=0; j&lt;7; j++ ) {\r\n\t\t\tcv::Mat &amp;img_reso_koma = img_reso_komas&#x5B;j];\r\n\r\n\t\t\t\/\/ \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30de\u30c3\u30c1\u30f3\u30b0\r\n\t\t\tcv::matchTemplate(img_search, img_reso_koma, img_result, CV_TM_CCOEFF_NORMED);\r\n\r\n\t\t\t\/\/ 50 \u500b\u691c\u51fa\u3059\u308b\r\n\t  \t\tfor ( int i=0; i&lt;50; i++ ) {\r\n\t\t\t\t  \/\/ \u6700\u5927\u306e\u30b9\u30b3\u30a2\u306e\u5834\u6240\u3092\u63a2\u3059\r\n\t\t\t\t  cv::Point max_pt;\r\n\t\t\t\t  double maxVal;\r\n\t\t\t\t  cv::minMaxLoc(img_result, NULL, &amp;maxVal, NULL, &amp;max_pt);\r\n\t\t\t\t  \/\/ \u4e00\u5b9a\u30b9\u30b3\u30a2\u4ee5\u4e0b\u306e\u5834\u5408\u306f\u51e6\u7406\u7d42\u4e86\r\n\t\t\t\t  if ( maxVal &lt; 0.5 ) break;\r\n\r\n\t\t\t\t  cv::Rect roi_rect(0, 0, img_reso_koma.cols, img_reso_koma.rows);\r\n\t\t\t\t  roi_rect.x = max_pt.x ;\r\n\t\t\t\t  roi_rect.y = max_pt.y ;\r\n\t\t\t\t  cv::Rect roi_rect_org( roi_rect.x * reso , roi_rect.y * reso ,\r\n\t\t\t\t\t  img_reso_koma.cols*reso, img_reso_koma.rows*reso );\r\n\r\n\t\t\t\t  \/\/ std::cout &lt;&lt; i &lt;&lt; &quot;:(&quot; &lt;&lt; max_pt.x &lt;&lt; &quot;, &quot; &lt;&lt; max_pt.y &lt;&lt; &quot;), score=&quot; &lt;&lt; maxVal &lt;&lt; std::endl;\r\n\t\t\t\t  \/\/ \u63a2\u7d22\u7d50\u679c\u306e\u5834\u6240\u306b\u77e9\u5f62\u3092\u63cf\u753b\r\n\t\t\t\t  cv::rectangle(img_reso_org, roi_rect_org, cols&#x5B;i], 3);\r\n\t\t\t\t  \/\/ cv::rectangle(img_search, roi_rect, cv::Scalar(0,0,0), CV_FILLED);\r\n\r\n\t\t\t\t  \/\/ \u691c\u51fa\u6e08\u307f\u306f 0.0 \u3067\u5857\u308a\u3064\u3076\u3057\r\n\t\t\t\t  for ( int y=0; y&lt;img_reso_koma.rows; y++ ) {\r\n\t\t\t\t\t  for ( int x=0; x&lt;img_reso_koma.cols; x++ ) {\r\n\t\t\t\t\t\t  int xx = max_pt.x + x - img_reso_koma.cols\/2;\r\n\t\t\t\t\t\t  int yy = max_pt.y + y - img_reso_koma.rows\/2;\r\n\t\t\t\t\t\t  if ( 0 &lt;= xx &amp;&amp; xx &lt; img_result.cols-1 ) {\r\n\t\t\t\t\t\t\t  if ( 0 &lt;= yy &amp;&amp; yy &lt; img_result.rows-1 ) {\r\n\t\t\t\t\t\t\t\t  img_result.at&lt;int&gt;(yy,xx) = 0;\r\n\t\t\t\t\t\t\t  }\r\n\t\t\t\t\t\t  }\r\n\t\t\t\t\t  }\r\n\t\t\t\t  }\r\n\t\t\t\t  \/\/ koma.push_back( roi_rect );\r\n\t\t\t}\r\n\t\t}\r\n\t\tcv::imshow(&quot;camera&quot;, img );\r\n\t\tcv::imshow(&quot;reso&quot;, img_reso);\r\n\t\tcv::imshow(&quot;reso org&quot;, img_reso_org);\r\n\r\n\t\tchar ch = cv::waitKey(30);\r\n\t\tif ( ch == 27 ) break;\r\n\t}\r\n\treturn 0;\r\n}\r\n<\/pre>\n<p>RowReso \u30af\u30e9\u30b9\u306f\u3001\u5358\u7d14\u306b cv:Mat \u306e\u4e2d\u8eab\u3092\u9593\u5f15\u304d\u3057\u3066\u3044\u308b\u3060\u3051\u3067\u3059\u3002<br \/>\n\u4f4e\u89e3\u50cf\u5316\u3059\u308b\u7387\u306f\u300c3\u300d\u3068\u3044\u3046\u5947\u6570\u3092\u53d6\u308a\u307e\u3059\u3002\u4e2d\u592e\u306e\u70b9\u3092\u30b5\u30f3\u30d7\u30ea\u30f3\u30b0\u3057\u305f\u304b\u3063\u305f\u305f\u3081\u306a\u306e\u3067\u3059\u304c\u3001\u672c\u5f53\u306f\u5de6\u4e0a\u306e\u70b9\u3067\u3082\u3088\u3044\u306e\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3053\u308c\u306f\u5f8c\u3067\u5b9f\u9a13\u3057\u307e\u3059\u3002<\/p>\n<p><a href=\"http:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2011\/11\/wpid-dworkblogimage20111122_03org.jpg\"><img decoding=\"async\" src=\"http:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2011\/11\/wpid-dworkblogimage20111122_03thum.jpg\" border=\"0\" \/><\/a><\/p>\n<p>\u591a\u5c11\u3001\u30ab\u30af\u30ab\u30af\u3068\u3057\u307e\u3059\u304c\u3001\u307b\u3069\u3088\u304f\u30de\u30c3\u30c1\u30f3\u30b0\u304c\u3067\u304d\u3066\u3044\u307e\u3059\u3002<br \/>\n7 \u3064\u306e\u99d2\u3092\u3001\u4f4e\u89e3\u50cf\u5ea6\u306e\u753b\u7d20\u6570\uff08640&#215;480 \u306e 1\/3 \u306a\u306e\u3067\u3001210&#215;160 = 34000\uff09\u3067\u691c\u7d22\u3059\u308b\u306e\u3067\u300124 \u4e07\u56de\u306e\u30de\u30c3\u30c1\u30f3\u30b0\u306e\u8a08\u7b97\u3092\u3057\u3066\u3044\u307e\u3059\u3002\u4f4e\u89e3\u50cf\u5ea6\u306b\u3057\u305f\u306e\u3067\u30019 \u500d\u307b\u3069\u65e9\u304f\u306a\u3063\u3066\u3044\u308b\u306f\u305a\u3067\u3059\u3002\u6559\u5e2b\u753b\u50cf\u3082 1\/3 \u30b5\u30a4\u30ba\u306b\u306a\u3063\u3066\u3044\u308b\u306e\u3067\u3001\u30de\u30c3\u30c1\u30f3\u30b0\u81ea\u4f53\u306e\u901f\u5ea6\u30a2\u30c3\u30d7\u3082\u5bc4\u4e0e\u3057\u3066\u3044\u308b\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p>\u3067\u3001\u691c\u51fa\u306e\u7cbe\u5ea6\u306f\u3069\u3046\u304b\u3068\u3044\u3046\u3068\u3001\u826f\u3044\u3088\u3046\u306a\u60aa\u3044\u3088\u3046\u306a\u3001\u3068\u3044\u3046\u611f\u3058\u3067\u3059\u306d\u3002\u53f3\u306e\u307b\u3046\u306b\u9ed2\u306e\u67a0\u304c\u3067\u3066\u3044\u308b\u306e\u3067\u3001\u3053\u3053\u3067\u8aa4\u691c\u51fa\u3057\u3066\u3044\u307e\u3059\u3002\u307e\u305f\u3001\u3068\u3053\u308d\u3069\u3053\u629c\u3051\u304c\u3067\u3066\u3044\u308b\u306e\u3067\u3001\u691c\u51fa\u3067\u304d\u306a\u3044\u99d2\u3082\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f 0.5 \u306e\u8db3\u5207\u308a\u306b\u306a\u3063\u3066\u3057\u307e\u3063\u305f\u7b87\u6240\u3067\u3059\u3002<br \/>\n\u52a0\u3048\u3066\u3001\u5b9f\u969b\u306b\u5b9f\u884c\u3057\u3066\u307f\u308b\u3068\u5206\u304b\u308b\u306e\u3067\u3059\u304c\u3001\u691c\u51fa\u306e\u8272\u304c\u3061\u304b\u3061\u304b\u3068\u5909\u308f\u308a\u307e\u3059\u3002\u691c\u51fa\u3057\u3066\u3044\u308b\u99d2\u306e\u30de\u30c3\u30c1\u30f3\u30b0\u3067\u3001\u8907\u6570\u30de\u30c3\u30c1\u3057\u3066\u3044\u308b\u3082\u306e\u304c\u3042\u308b\u308f\u3051\u3067\u3059\u3002<\/p>\n<p>\u3053\u306e\u3042\u305f\u308a\u306e<strong>\u8aa4\u691c\u51fa<\/strong>\u306f\u60f3\u5b9a\u306e\u3046\u3061\u3067\u3001\u4f4e\u89e3\u50cf\u5ea6\u306b\u3088\u3063\u3066\u304a\u304a\u307e\u304b\u306a\u99d2\u306e\u4f4d\u7f6e\u304c\u308f\u304b\u3063\u305f\u3089\u3001\u9ad8\u89e3\u50cf\u5ea6\u306e\u307b\u3046\u3067\u99d2\u306e\u691c\u51fa\u3092\u3084\u308a\u76f4\u3057\u307e\u3059\u3002\u3053\u306e\u3042\u305f\u308a\u3001\u4eba\u9593\u306e\u76ee\u3067\u3082\u3001\u30a2\u30af\u30b7\u30e7\u30f3\u30d1\u30ba\u30eb\u3092\u3059\u308b\u5834\u5408\u3001\u5927\u307e\u304b\u306b\u8272\u304b\u5f62\u3067\u76ee\u3067\u8ffd\u3063\u3066\u3001\u305d\u306e\u5f8c\u3067\u3058\u3063\u3068\u51dd\u8996\u3057\u3066\u672c\u5f53\u306b\u305d\u308c\u304c\u8a8d\u8b58\u3057\u305f\u99d2\u3068\u3042\u3063\u3066\u3044\u308b\u304b\u3069\u3046\u304b\uff1f\u3092\u78ba\u8a8d\u3059\u308b\u3068\u3044\u3046\u8a8d\u8b58\u624b\u9806\u306b\u306a\u308b&#8230;\u3068\u601d\u3046\u306e\u3067\u305d\u308c\u306b\u6e96\u3058\u307e\u3059\u3002<\/p>\n<p>\u3042\u3068\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30de\u30c3\u30c1\u306e\u56de\u6570\u81ea\u4f53\u306f\u3001\u521d\u56de\u306e\u307f\uff08\u3042\u308b\u3044\u306f\u30d1\u30ba\u30eb\u304c\u4e00\u65e6\u6d88\u3048\u305f\u3001\u3042\u308b\u3044\u306f iPhone \u304c\u5927\u304d\u304f\u52d5\u3044\u305f\uff09\u3068\u304d\u306b\u5fc5\u8981\u3067\u3001\u7d9a\u304f\u30d5\u30ec\u30fc\u30e0\u306e\u307b\u3046\u3067\u306f\u3001\u5148\u306b\u8a8d\u8b58\u3057\u305f\u99d2\u306e\u4f4d\u7f6e\u304b\u3089<strong>\u985e\u63a8<\/strong>\u3092\u3055\u305b\u308b\u3053\u3068\u3067\u3001\u30de\u30c3\u30c1\u30f3\u30b0\u306e\u7bc4\u56f2\u3092\u6975\u7aef\u306b\u6e1b\u3089\u3059\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002\u4f4e\u89e3\u50cf\u306e\u99d2\u306f 10&#215;10 \u7a0b\u5ea6\u306a\u306e\u3067\u3001\u3053\u308c\u306b 2 \u500d\u306e\u5e45\u3092\u6301\u305f\u305b\u3066 20&#215;20 x \u76e4\u97627&#215;7 = 2\u4e07\u56de \u306e\u30de\u30c3\u30c1\u30f3\u30b0\u3067\u826f\u304f\u306a\u308b\u306f\u305a\u3067\u3059\u3002<\/p>\n<p>\u3063\u3066\u306a\u8a33\u3067\u5f8c\u65e5\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>OpenCV \u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30de\u30c3\u30c1\u3092\u4f7f\u3063\u3066\u99d2\u3092\u691c\u51fa | Moonmile Solutions Blog http:\/\/www.moonmile.net\/blog\/archives\/2468 \u306e\u7d9a\u304d\u3067\u3059\u3002 \u5148\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 &hellip; <a href=\"https:\/\/www.moonmile.net\/blog\/archives\/2492\">\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":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[22,35],"tags":[],"class_list":["post-2492","post","type-post","status-publish","format-standard","hentry","category-c","category-opencv"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/2492","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/comments?post=2492"}],"version-history":[{"count":2,"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/2492\/revisions"}],"predecessor-version":[{"id":2499,"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/2492\/revisions\/2499"}],"wp:attachment":[{"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/media?parent=2492"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/categories?post=2492"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/tags?post=2492"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}