{"id":2561,"date":"2011-12-07T16:16:30","date_gmt":"2011-12-06T22:16:30","guid":{"rendered":"http:\/\/www.moonmile.net\/blog\/archives\/2561"},"modified":"2011-12-07T16:18:15","modified_gmt":"2011-12-07T07:18:15","slug":"%e8%89%b2%e7%9b%b8%e3%81%ae%e3%81%bf%e3%81%a7%e3%83%92%e3%82%b9%e3%83%88%e3%82%b0%e3%83%a9%e3%83%a0%e3%82%92%e8%a8%88%e7%ae%97%e8%a1%a8%e7%a4%ba%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b","status":"publish","type":"post","link":"http:\/\/www.moonmile.net\/blog\/archives\/2561","title":{"rendered":"\u8272\u76f8\u306e\u307f\u3067\u30d2\u30b9\u30c8\u30b0\u30e9\u30e0\u3092\u8a08\u7b97\u8868\u793a\u3057\u3066\u307f\u308b"},"content":{"rendered":"<p>\u5927\u96d1\u628a\u306b\u3001HSV \u5909\u63db\u3092\u3057\u305f\u5f8c\u306b\u8272\u76f8(Hue)\u3060\u3051\u3092\u53d6\u308a\u51fa\u3057\u3066\u3001\u30d2\u30b9\u30c8\u30b0\u30e9\u30e0\u306b\u3057\u3066\u307f\u308b\u3002<br \/>\n\u3053\u3046\u3059\u308b\u3068\u3001\u5bfe\u8c61\u7269\uff08\u3053\u306e\u5834\u5408\u306f\u30b2\u30fc\u30e0\u306e\u99d2\uff09\u304c\u6301\u3063\u3066\u3044\u308b\u300c\u8272\u300d\u3068\u3044\u3046\u7279\u5fb4\u91cf\u304c\u308f\u304b\u308b&#8230;\u30cf\u30ba\u3002\u539f\u5b50\u5206\u6790\u307f\u305f\u3044\u306a\u3082\u306e\u304b\u3082\u3002<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include &amp;quot;stdafx.h&amp;quot;\r\n#include &lt;iostream&gt;\r\n#include &amp;quot;opencv\/cv.h&amp;quot;\r\n#include &amp;quot;opencv\/highgui.h&amp;quot;\r\nusing namespace std;\r\n\r\nint main(int argc, char* argv&#x5B;])\r\n{\r\n\tchar *fname = argv&#x5B;1];\r\n\tcv::Mat image = cv::imread( fname );\r\n\tcv::Mat imageHsv;\r\n\r\n\tcv::cvtColor( image, imageHsv, CV_RGB2HSV );\r\n\tfor ( int y=0; y&lt;imageHsv.rows; ++y ) {\r\n\t\tfor ( int x=0; x&lt;imageHsv.cols; ++x ) {\r\n\t\t\tcv::Vec3b &amp;v = imageHsv.at&lt;cv::Vec3b&gt;(y,x);\r\n\t\t\tv&#x5B;0] = v&#x5B;0]; \/\/ H\r\n\t\t\tif ( v&#x5B;1] &lt; 64 || v&#x5B;2] &lt; 64 ) v&#x5B;0] = 300; \/\/ \u95be\u5024\u4ee5\u4e0b\u306f\u7bc4\u56f2\u5916\u3068\u3059\u308b\r\n\t\t\tv&#x5B;1] = ( v&#x5B;1] &lt; 64 )? 0: 255; \/\/ S \u95be\u5024\u4ee5\u4e0b\u306f\u767d\u3068\u307f\u306a\u3059\r\n\t\t\tv&#x5B;2] = ( v&#x5B;2] &lt; 64 )? 0: 255; \/\/ V \u95be\u5024\u4ee5\u4e0b\u306f\u9ed2\u3068\u307f\u306a\u3059\r\n\t\t}\r\n\t}\r\n\r\n\t\/\/ \u30d2\u30b9\u30c8\u30b0\u30e9\u30e0\u7528\r\n\tconst int ch_width = 180, ch_height=200;\r\n\tcv::Mat imageHist( cv::Size( ch_width, ch_height), CV_8UC3, cv::Scalar::all(255));\r\n\tcv::cvtColor( imageHist, imageHist, CV_RGB2HSV );\r\n\tfor ( int y=0; y&lt;imageHist.rows; ++y ) {\r\n\t\tfor ( int x=0; x&lt;imageHist.cols; ++x ) {\r\n\t\t\tcv::Vec3b &amp;v = imageHist.at&lt;cv::Vec3b&gt;(y,x);\r\n\t\t\tv&#x5B;0] = x;\t\t\/\/ H\r\n\t\t\tv&#x5B;1] = 100;\t\t\/\/ S\r\n\t\t\tv&#x5B;2] = 255;\t\t\/\/ V\r\n\t\t}\r\n\t}\r\n\tcv::cvtColor( imageHist, imageHist, CV_HSV2RGB );\r\n\r\n\tcv::Mat hist;\r\n\tconst int hdims&#x5B;] = {180}; \/\/ \u6b21\u5143\u6bce\u306e\u30d2\u30b9\u30c8\u30b0\u30e9\u30e0\u30b5\u30a4\u30ba\r\n\tconst float hranges&#x5B;] = {0,180};\r\n\tconst float* ranges&#x5B;] = {hranges}; \/\/ \u6b21\u5143\u6bce\u306e\u30d3\u30f3\u306e\u4e0b\u9650\u4e0a\u9650\r\n\tconst int chs&#x5B;] = {0};\r\n\tdouble max_val = .0;\r\n\tcv::calcHist(&amp;imageHsv, 1, chs, cv::Mat(), hist, 1, hdims, ranges);\r\n\t\/\/ \u6700\u5927\u5024\u306e\u8a08\u7b97\r\n\tcv::minMaxLoc(hist, 0, &amp;max_val);\r\n\tcv::Scalar color = cv::Scalar::all(100);\r\n\thist = hist * (max_val? ch_height\/max_val:0.);\r\n\tfor(int j=0; j&lt;hdims&#x5B;0]; ++j) {\r\n\t\tint bin_w = cv::saturate_cast&lt;int&gt;((double)ch_width\/hdims&#x5B;0]);\r\n\t\tcv::rectangle(imageHist,\r\n\t\t\tcv::Point(j*bin_w, imageHist.rows),\r\n\t\t\tcv::Point((j+1)*bin_w, imageHist.rows-cv::saturate_cast&lt;int&gt;(hist.at&lt;float&gt;(j))),\r\n\t\t\tcolor, -1);\r\n\t}\r\n\tcv::cvtColor( imageHsv, imageHsv, CV_HSV2RGB );\r\n\r\n\tcv::namedWindow(&amp;quot;original&amp;quot;, CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO);\r\n\tcv::namedWindow(&amp;quot;result&amp;quot;, CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO);\r\n\tcv::namedWindow(&amp;quot;hist&amp;quot;, CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO);\r\n\tcv::imshow(&amp;quot;original&amp;quot;,image);\r\n\tcv::imshow(&amp;quot;result&amp;quot;,imageHsv);\r\n\tcv::imshow(&amp;quot;hist&amp;quot;,imageHist);\r\n\tcv::waitKey(0);\r\n\r\n\treturn 0;\r\n}\r\n<\/pre>\n<p><a href=\"http:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2011\/12\/wpid-dworkblogimage20111207_03org.jpg\"><img decoding=\"async\" src=\"http:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2011\/12\/wpid-dworkblogimage20111207_03thum.jpg\" border=\"0\" \/><\/a><br \/>\n<a href=\"http:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2011\/12\/wpid-dworkblogimage20111207_04org.jpg\"><img decoding=\"async\" src=\"http:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2011\/12\/wpid-dworkblogimage20111207_04thum.jpg\" border=\"0\" \/><\/a><br \/>\n<a href=\"http:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2011\/12\/wpid-dworkblogimage20111207_05org.jpg\"><img decoding=\"async\" src=\"http:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2011\/12\/wpid-dworkblogimage20111207_05thum.jpg\" border=\"0\" \/><\/a><br \/>\n<a href=\"http:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2011\/12\/wpid-dworkblogimage20111207_06org.jpg\"><img decoding=\"async\" src=\"http:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2011\/12\/wpid-dworkblogimage20111207_06thum.jpg\" border=\"0\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>\u80cc\u666f\u304c\u30aa\u30ec\u30f3\u30b8\u8272\u306a\u306e\u3067\u3001\u305d\u308c\u306b\u30d2\u30b9\u30c8\u30b0\u30e9\u30e0\u304c\u5f15\u3063\u5f35\u3089\u308c\u3066\u3057\u307e\u3046\u306e\u306f\u5f8c\u3067\u691c\u8a0e\u3059\u308b\u3068\u3057\u3066\u3001\u8272\u76f8\u304c180\u306e\u5e45\u306e\u307e\u307e\u3060\u3068\u5206\u89e3\u80fd\u304c\u7d30\u304b\u304f\u904e\u304e\u3066\u30d4\u30fc\u30af\u304c\u3068\u3093\u304c\u308a\u904e\u304e\u308b\u304b\u306a\u3068\u3002<\/p>\n<p>\u8a66\u3057\u306b\u5b9f\u753b\u50cf\u3092\u8abf\u3079\u3066\u307f\u308b\u3068\u3001<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2011\/12\/wpid-dworkblogimage20111207_07.jpg\" border=\"0\" \/><br \/>\n<img decoding=\"async\" src=\"http:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2011\/12\/wpid-dworkblogimage20111207_09.jpg\" border=\"0\" \/><br \/>\n<img decoding=\"async\" src=\"http:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2011\/12\/wpid-dworkblogimage20111207_10.jpg\" border=\"0\" \/><\/p>\n<p>\u306e\u3088\u3046\u306b\u5e83\u304c\u308a\u3092\u6301\u3064\u306e\u3067\u3001\u76f8\u95a2\u4fc2\u6570\u3067\u30de\u30c3\u30c1\u3055\u305b\u308b\u304b\u3001\u3082\u3063\u3068\u5358\u7d14\u306b\u8272\u3092\u7a4d\u7b97\u3057\u3066 max \u3060\u3051\u3092\u53d6\u308a\u51fa\u3059\u304b\u3002\u8272\u306e\u691c\u51fa\u81ea\u4f53\u306f\u3001\u304a\u304a\u307e\u304b\u3067\u826f\u3044\uff08\u767d\u9ed2\uff0b\uff16\u8272\u3050\u3089\u3044\uff09\u306e\u3067\u3001\u3053\u306e\u3050\u3089\u3044\u3067\u3042\u308c\u3070\u3001\u3069\u308c\u3060\u3051\u691c\u51fa\u7b87\u6240\u304c\u591a\u304f\u3066\u3082\u3042\u3063\u3068\u3044\u3046\u9593\u306b\u7d42\u308f\u308b\u30cf\u30ba\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5927\u96d1\u628a\u306b\u3001HSV \u5909\u63db\u3092\u3057\u305f\u5f8c\u306b\u8272\u76f8(Hue)\u3060\u3051\u3092\u53d6\u308a\u51fa\u3057\u3066\u3001\u30d2\u30b9\u30c8\u30b0\u30e9\u30e0\u306b\u3057\u3066\u307f\u308b\u3002 \u3053\u3046\u3059\u308b\u3068\u3001\u5bfe\u8c61\u7269\uff08\u3053\u306e\u5834\u5408\u306f\u30b2\u30fc\u30e0\u306e\u99d2\uff09\u304c\u6301\u3063\u3066\u3044\u308b\u300c\u8272\u300d\u3068\u3044\u3046\u7279\u5fb4\u91cf\u304c\u308f\u304b\u308b&#8230;\u30cf\u30ba\u3002\u539f\u5b50\u5206\u6790\u307f\u305f\u3044\u306a\u3082\u306e\u304b\u3082\u3002 # &hellip; <a href=\"http:\/\/www.moonmile.net\/blog\/archives\/2561\">\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-2561","post","type-post","status-publish","format-standard","hentry","category-c","category-opencv"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/2561","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=2561"}],"version-history":[{"count":1,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/2561\/revisions"}],"predecessor-version":[{"id":2562,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/2561\/revisions\/2562"}],"wp:attachment":[{"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/media?parent=2561"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/categories?post=2561"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/tags?post=2561"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}