{"id":9164,"date":"2016-11-30T20:35:26","date_gmt":"2016-12-01T01:35:26","guid":{"rendered":"httpss:\/\/www.powenko.com\/wordpress\/?p=9164"},"modified":"2016-11-30T21:06:52","modified_gmt":"2016-12-01T02:06:52","slug":"1-%e4%ba%ba%e8%87%89%e6%89%be%e5%b0%8b","status":"publish","type":"post","link":"https:\/\/www.powenko.com\/wordpress\/?p=9164","title":{"rendered":"1 \u4eba\u81c9\u627e\u5c0b"},"content":{"rendered":"<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n#include &lt;iostream&gt;\r\n#include &lt;opencv2\/core\/core.hpp&gt; \r\n#include &lt;opencv2\/highgui\/highgui.hpp&gt;\r\n#include &lt;opencv\/highgui.h&gt;\r\n#include &lt;opencv\/cv.h&gt;\r\nusing namespace cv ;\r\nusing namespace std ;\r\n\r\nvoid detectAndDisplay( Mat frame );\r\n\/** Global variables *\/\r\n String face_cascade_name = &quot;\/Users\/powenko\/Desktop\/\u975c\u5b9c\u5927\u5b78\/20161001-\u8ab2\u7a0b-\u7121\u4eba\u6a5f\u5b89\u5168\u76e3\u63a7\/OpenCV\/opencv\/XCode\/07Face\/sample21_haarcascades_Camera\/test\/opencv-master\/data\/haarcascades\/haarcascade_frontalface_alt.xml&quot;;\r\n String eyes_cascade_name = &quot;\/Users\/powenko\/Desktop\/\u975c\u5b9c\u5927\u5b78\/20161001-\u8ab2\u7a0b-\u7121\u4eba\u6a5f\u5b89\u5168\u76e3\u63a7\/OpenCV\/opencv\/XCode\/07Face\/sample21_haarcascades_Camera\/test\/opencv-master\/data\/haarcascades\/haarcascade_eye_tree_eyeglasses.xml&quot;;\r\nCascadeClassifier face_cascade;\r\nCascadeClassifier eyes_cascade;\r\nstring window_name = &quot;Capture - Face detection&quot;;\r\nRNG rng(12345);\r\n\/\/\u4e0b\u8f09\u3000httpsss:\/\/github.com\/opencv\/opencv\/tree\/master\/data\/haarcascades\r\n\r\n\r\nint main() {\r\n   \r\n    if (!face_cascade.load(face_cascade_name))\r\n    {\r\n        printf(&quot;--(!)Error loading\\n&quot;);\r\n        return -1;\r\n    }\r\n    if (!eyes_cascade.load(eyes_cascade_name))\r\n    {\r\n        printf(&quot;--(!)Error loading\\n&quot;);\r\n        return -1;\r\n    }\r\n    VideoCapture cap(0);             \/\/\u958b\u555f\u651d\u5f71\u6a5f\r\n    if(!cap.isOpened()) return -1;   \/\/\u78ba\u8a8d\u651d\u5f71\u6a5f\u6253\u958b\r\n    Mat frame;                       \/\/\u7528\u77e9\u9663\u7d00\u9304\u6293\u53d6\u7684\u6bcf\u5f35frame\r\n    for(;;){\r\n        if (cap.isOpened())\r\n        {\r\n            \/\/frame=cvQueryFrame(cam);\r\n            cap&gt;&gt;frame;   \/\/\u628a\u53d6\u5f97\u7684\u5f71\u50cf\u653e\u7f6e\u5230\u77e9\u9663\u4e2d\r\n            if( !frame.empty() )\r\n            { detectAndDisplay( frame ); }\r\n            else\r\n            { printf(&quot; --(!) No captured frame -- Break!&quot;); break; }\r\n            \r\n            if(waitKey(30) &gt;= 0) break;  \/\/\u6309\u9375\u5c31\u96e2\u958b\u7a0b\u5f0f\r\n\r\n        }\r\n    }\r\n    system(&quot;PAUSE&quot;);\r\n    return 0;\r\n}\r\n\r\nvoid detectAndDisplay( Mat frame )\r\n{\r\n    vector&lt;Rect&gt;faces;\r\n    Mat frame_gray;\r\n    cvtColor(frame,frame_gray,CV_BGR2GRAY);\r\n    equalizeHist(frame_gray,frame_gray);\r\n    face_cascade.detectMultiScale(frame_gray,faces,1.1,2,0, Size(30, 30) );\r\n    for (int i=0;i&lt;faces.size();i++)\r\n    {\r\n        Point center(faces&#x5B;i].x+faces&#x5B;i].width*0.5,faces&#x5B;i].y+faces&#x5B;i].height*0.5);\r\n        ellipse(frame,center,Size( faces&#x5B;i].width*0.5, faces&#x5B;i].height*0.5), 0, 0, 360, Scalar( 255, 0, 255 ), 4, 8, 0);\r\n        Mat faceROI = frame_gray( faces&#x5B;i] );\r\n        std::vector&lt;Rect&gt; eyes;\r\n        \/\/-- In each face, detect eyes\r\n        eyes_cascade.detectMultiScale( faceROI, eyes, 1.1, 2, 0 , Size(30, 30) );\r\n        for( int j = 0; j &lt; eyes.size(); j++ )\r\n        {\r\n            Point center( faces&#x5B;i].x + eyes&#x5B;j].x + eyes&#x5B;j].width*0.5, faces&#x5B;i].y + eyes&#x5B;j].y + eyes&#x5B;j].height*0.5 );\r\n            int radius = cvRound( (eyes&#x5B;j].width + eyes&#x5B;j].height)*0.25 );\r\n            circle( frame, center, radius, Scalar( 255, 0, 0 ), 4, 8, 0 );\r\n        }\r\n    }\r\n    imshow(window_name, frame);                \/\/\u5efa\u7acb\u4e00\u500b\u8996\u7a97,\u986f\u793aframe\u5230camera\u540d\u7a31\u7684\u8996\u7a97\r\n    \r\n}\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>#include &lt;iostream&gt; #include &lt;opencv2\/core\/cor [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":9165,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[336],"tags":[],"class_list":["post-9164","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ch06-haarcascades"],"_links":{"self":[{"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/9164"}],"collection":[{"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=9164"}],"version-history":[{"count":5,"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/9164\/revisions"}],"predecessor-version":[{"id":9175,"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/9164\/revisions\/9175"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=\/wp\/v2\/media\/9165"}],"wp:attachment":[{"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=9164"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=9164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}