{"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<p>[code lang=&#8221;cpp&#8221;]<br \/>\n#include &quot;stdafx.h&quot;<br \/>\n#include &lt;iostream&gt;<br \/>\n#include &quot;opencv\/cv.h&quot;<br \/>\n#include &quot;opencv\/highgui.h&quot;<br \/>\nusing namespace std;<\/p>\n<p>int main(int argc, char* argv[])<br \/>\n{<br \/>\n\tchar *fname = argv[1];<br \/>\n\tcv::Mat image = cv::imread( fname );<br \/>\n\tcv::Mat imageHsv;<\/p>\n<p>\tcv::cvtColor( image, imageHsv, CV_RGB2HSV );<br \/>\n\tfor ( int y=0; y&lt;imageHsv.rows; ++y ) {<br \/>\n\t\tfor ( int x=0; x&lt;imageHsv.cols; ++x ) {<br \/>\n\t\t\tcv::Vec3b &amp;v = imageHsv.at&lt;cv::Vec3b&gt;(y,x);<br \/>\n\t\t\tv[0] = v[0]; \/\/ H<br \/>\n\t\t\tif ( v[1] &lt; 64 || v[2] &lt; 64 ) v[0] = 300; \/\/ \u95be\u5024\u4ee5\u4e0b\u306f\u7bc4\u56f2\u5916\u3068\u3059\u308b<br \/>\n\t\t\tv[1] = ( v[1] &lt; 64 )? 0: 255; \/\/ S \u95be\u5024\u4ee5\u4e0b\u306f\u767d\u3068\u307f\u306a\u3059<br \/>\n\t\t\tv[2] = ( v[2] &lt; 64 )? 0: 255; \/\/ V \u95be\u5024\u4ee5\u4e0b\u306f\u9ed2\u3068\u307f\u306a\u3059<br \/>\n\t\t}<br \/>\n\t}<\/p>\n<p>\t\/\/ \u30d2\u30b9\u30c8\u30b0\u30e9\u30e0\u7528<br \/>\n\tconst int ch_width = 180, ch_height=200;<br \/>\n\tcv::Mat imageHist( cv::Size( ch_width, ch_height), CV_8UC3, cv::Scalar::all(255));<br \/>\n\tcv::cvtColor( imageHist, imageHist, CV_RGB2HSV );<br \/>\n\tfor ( int y=0; y&lt;imageHist.rows; ++y ) {<br \/>\n\t\tfor ( int x=0; x&lt;imageHist.cols; ++x ) {<br \/>\n\t\t\tcv::Vec3b &amp;v = imageHist.at&lt;cv::Vec3b&gt;(y,x);<br \/>\n\t\t\tv[0] = x;\t\t\/\/ H<br \/>\n\t\t\tv[1] = 100;\t\t\/\/ S<br \/>\n\t\t\tv[2] = 255;\t\t\/\/ V<br \/>\n\t\t}<br \/>\n\t}<br \/>\n\tcv::cvtColor( imageHist, imageHist, CV_HSV2RGB );<\/p>\n<p>\tcv::Mat hist;<br \/>\n\tconst int hdims[] = {180}; \/\/ \u6b21\u5143\u6bce\u306e\u30d2\u30b9\u30c8\u30b0\u30e9\u30e0\u30b5\u30a4\u30ba<br \/>\n\tconst float hranges[] = {0,180};<br \/>\n\tconst float* ranges[] = {hranges}; \/\/ \u6b21\u5143\u6bce\u306e\u30d3\u30f3\u306e\u4e0b\u9650\u4e0a\u9650<br \/>\n\tconst int chs[] = {0};<br \/>\n\tdouble max_val = .0;<br \/>\n\tcv::calcHist(&amp;imageHsv, 1, chs, cv::Mat(), hist, 1, hdims, ranges);<br \/>\n\t\/\/ \u6700\u5927\u5024\u306e\u8a08\u7b97<br \/>\n\tcv::minMaxLoc(hist, 0, &amp;max_val);<br \/>\n\tcv::Scalar color = cv::Scalar::all(100);<br \/>\n\thist = hist * (max_val? ch_height\/max_val:0.);<br \/>\n\tfor(int j=0; j&lt;hdims[0]; ++j) {<br \/>\n\t\tint bin_w = cv::saturate_cast&lt;int&gt;((double)ch_width\/hdims[0]);<br \/>\n\t\tcv::rectangle(imageHist,<br \/>\n\t\t\tcv::Point(j*bin_w, imageHist.rows),<br \/>\n\t\t\tcv::Point((j+1)*bin_w, imageHist.rows-cv::saturate_cast&lt;int&gt;(hist.at&lt;float&gt;(j))),<br \/>\n\t\t\tcolor, -1);<br \/>\n\t}<br \/>\n\tcv::cvtColor( imageHsv, imageHsv, CV_HSV2RGB );<\/p>\n<p>\tcv::namedWindow(&quot;original&quot;, CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO);<br \/>\n\tcv::namedWindow(&quot;result&quot;, CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO);<br \/>\n\tcv::namedWindow(&quot;hist&quot;, CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO);<br \/>\n\tcv::imshow(&quot;original&quot;,image);<br \/>\n\tcv::imshow(&quot;result&quot;,imageHsv);<br \/>\n\tcv::imshow(&quot;hist&quot;,imageHist);<br \/>\n\tcv::waitKey(0);<\/p>\n<p>\treturn 0;<br \/>\n}<br \/>\n[\/code]<\/p>\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_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_hide_featured_image":false,"_jetpack_featured_image_duplicate_dismissed":0,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[22,35],"tags":[],"class_list":["post-2561","post","type-post","status-publish","format-standard","hentry","category-c","category-opencv"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_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}]}}