<!DOCTYPE html>
<html>
<head profile="http://gmpg.org/xfn/11">
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>openFrameworks で画像を扱ってみるよ | Code Life</title>
  <meta name="description" content="EVERYTHING WILL BE OK">
  
  
  
  <link rel="stylesheet" href="/wp-content/themes/flat/style.css" type="text/css">
  <link rel="stylesheet" href="/wp-content/themes/flat/comment-style.css" type="text/css">
  <link rel="stylesheet" href="/wp-content/themes/flat/japanese.css" type="text/css">
  
  <script type='text/javascript' src='/wp-includes/js/jquery/jquery.js?ver=1.11.0'></script>
  <script type='text/javascript' src='/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1'></script>
  
  
  <link rel='prev' title='C#でPowerPointのスライドを画像に書き出す' href='/?p=1613'>
  <link rel='next' title='RabbitMQインストールしてみた（ついでにHomebrewを導入してみた）' href='/?p=1625'>
  <link rel='canonical' href='/?p=1617'>
  <link rel='shortlink' href='/?p=1617'>
  <link rel="stylesheet" href="/wp-content/plugins/shutter-reloaded/shutter-reloaded.css?ver=2.4" type="text/css" media="screen">
  <style type="text/css">
  .recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}
  </style>
  
  <style type="text/css">
  .wp_social_bookmarking_light{
    border: 0 !important;
    padding: 10px 0 20px 0 !important;
    margin: 0 !important;
  }
  .wp_social_bookmarking_light div{
    float: left !important;
    border: 0 !important;
    padding: 0 !important;
    margin: 0 5px 0px 0 !important;
    min-height: 30px !important;
    line-height: 18px !important;
    text-indent: 0 !important;
  }
  .wp_social_bookmarking_light img{
    border: 0 !important;
    padding: 0;
    margin: 0;
    vertical-align: top !important;
  }
  .wp_social_bookmarking_light_clear{
    clear: both !important;
  }
  
  
  
  </style>
  <style type="text/css" id="syntaxhighlighteranchor"></style>
  <script type="text/javascript" src="/wp-content/themes/flat/js/jscript.js"></script>
  <script type="text/javascript" src="/wp-content/themes/flat/js/comment.js"></script>
  <script type="text/javascript" src="/wp-content/themes/flat/js/rollover.js"></script>
  <style type="text/css">
  a, .post .title a:hover, .post_meta a:hover, #bread_crumb ul li a:hover, #previous_post a:hover, #next_post a:hover, .post a.more-link:hover, #right_col li a:hover, #copyright li a:hover, #archive_headline #keyword,
   #comments_wrapper a:hover, #comment_header_right .comment_switch_active a, #comment_header_right .comment_switch_active a:hover, #comment_pager .current
   { color:#00A19E; }

  #no_post a.back:hover, #wp-calendar td a:hover, #wp-calendar #prev a:hover, #wp-calendar #next a:hover, .page_navi a:hover, #submit_comment:hover
  { background-color:#00A19E; }

  #guest_info input:focus, #comment_textarea textarea:focus
  { border:1px solid #00A19E; }

  a:hover
  { color:#2F8EBD; }

  body { font-size:14px; }



  </style>
</head>
<body>
  <div id="header">
    <div class="header_menu"></div>
    <h1 class="logo_text"><a href="/">Code Life</a></h1>
    <h2 id='site_description'>EVERYTHING WILL BE OK</h2>
  </div>
  <div id="main_content" class="clearfix">
    <div id="left_col">
      <div id="bread_crumb">
        <ul class="clearfix">
          <li id="bc_home">
            <a href="/" title="ホーム">ホーム</a>
          </li>
          <li id="bc_cat">
            <a href="/?cat=17" title="Mac の投稿をすべて表示">Mac</a>
          </li>
          <li class="last">openFrameworks で画像を扱ってみるよ</li>
        </ul>
      </div>
      <div class="post_wrap clearfix" id="single">
        <div class="post">
          <h3 class="title"><span>openFrameworks で画像を扱ってみるよ</span></h3>
          <div class="post_content">
            <div class='wp_social_bookmarking_light'>
              
              
              <div class="wsbl_hatena_button">
                <a href="http://b.hatena.ne.jp/entry/https://code-life.net/?p=1617" class="hatena-bookmark-button" data-hatena-bookmark-title="openFrameworks で画像を扱ってみるよ" data-hatena-bookmark-layout="standard" title="このエントリーをはてなブックマークに追加"><img src="//b.hatena.ne.jp/images/entry-button/button-only@2x.png" alt="このエントリーをはてなブックマークに追加" width="20" height="20" style="border: none;"></a> 
                <script type="text/javascript" src="//b.hatena.ne.jp/js/bookmark_button.js" charset="utf-8" async="async"></script>
              </div>
              <div class="wsbl_evernote">
                <a href="#" onclick="Evernote.doClip({ title:'openFrameworks で画像を扱ってみるよ', url:'https://code-life.net/?p=1617' });return false;"><img src="http://static.evernote.com/article-clipper.png"></a>
              </div>
            </div><br class='wp_social_bookmarking_light_clear'>
            <p>iyamaです。</p>
            <p>今日はopenFrameworksで画像を扱ってみたいと思います。</p>
            <p><span id="more-1617"></span><br>
            　</p>
            <p>画像ファイルを読み込んで表示させるのと、<br>
            その画像ファイルを画像データとしていじってみましょう。</p>
            <p><strong>■環境</strong><br>
            Mac OS X 10.7<br>
            Xcode 4.2.1<br>
            openFrameworks v007 osx</p>
            <p><strong>■testApp.h</strong><br>
            public: の中に以下を追加</p>
            <pre class="brush: cpp; title: ; notranslate" title="">
ofImage myImage;
</pre>
            <p><strong>■testApp.cpp</strong><br>
            今回はsetup()とdraw()に処理を追加。<br>
            以下、testApp.cppの一部抜粋。</p>
            <pre class="brush: cpp; title: ; notranslate" title="">
//--------------------------------------------------------------
void testApp::setup(){
    ofBackground(0, 0, 0);
    ofEnableSmoothing();
    
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE);
    
    myImage.loadImage(&quot;test.jpg&quot;);
}

//--------------------------------------------------------------
void testApp::draw(){
    ofSetColor(255, 255, 255);
    myImage.draw(20, 29);
    unsigned char * pixels = myImage.getPixels();
    int w = myImage.width;
    int h = myImage.height;
    
    for (int i = 0; i &lt; w; i+=8) {
        for (int j = 0; j &lt; h; j+=8) {
            int valueR = pixels[j * 3 * w + i * 3];
            int valueG = pixels[j * 3 * w + i * 3 + 1];
            int valueB = pixels[j * 3 * w + i * 3 + 2];
            
            ofSetColor(255, 0, 0, 63);
            ofCircle(600 + i, 20 + j, 10 * valueR / 255.0);
            
            ofSetColor(0, 255, 0, 63);
            ofCircle(600 + i, 20 + j, 10 * valueG / 255.0);
            
            ofSetColor(0, 0, 255, 63);
            ofCircle(600 + i, 20 + j, 10 * valueB / 255.0);
        }
    }

}
</pre>
            <p><strong>■解説</strong><br>
            setup()は初回実行時に一度だけ呼び出される関数？エリアです。<br>
            初期化処理を記述しましょう。<br>
            今回は画面の基本設定と画像の読み込みを行っています。<br>
            ofBackground&#8230;の部分は画面上の基本設定。<br>
            glEnable&#8230;部分は画面の色取り扱い設定で、加法混色にします。<br>
            myImage&#8230;で画像を読み込み。<br>
            myImageはFlashで言うところのMovieClipというイメージでしょうか。<br>
            loadImageで画像の置いてあるパスを指定し、呼び出します。<br>
            ファイルの呼び出しパスは[プロジェクトディレクトリ]/bin/data内がルートになっています。<br>
            　</p>
            <p>次にdraw()、画面上の描画についてです。<br>
            ofSetColorで色の指定をしてからmyImage.drawで表示。<br>
            色の指定とはRGBのすべてのチャンネルを表示に設定したと考えてください。<br>
            この場合、元の画像のまま表示されます。<br>
            　</p>
            <p>次にpixelsに画像のビットマップ情報を配列で取得します。<br>
            その後のforのループでは画像データを8px間隔で処理を施しています。<br>
            valueR、valueG、valueBはそれぞれRGBの値を取得しています。<br>
            RGBごとに円を描画して画像データを操作しています。<br>
            ofSetColorの4つ目の値は透明度(Alpha)を設定します。<br>
            　</p>
            <p>■実行結果<br>
            実際にコンパイルしてみると、以下のように表示されます。</p>
            <p><a href="/wp-content/uploads/2012/02/21048cddc9bd687cd07d08cd7f7e00fe.png"><img src="/wp-content/uploads/2012/02/21048cddc9bd687cd07d08cd7f7e00fe-300x166.png" alt="openFrameworks image test" width="300" height="166" class="alignnone size-medium wp-image-1619"></a></p>
            <p>なんだか思ったより簡単に画像いじったりできますね。</p>
          </div>
        </div>
        <div class="meta">
          <ul>
            <li class="post_date clearfix"><span class="date">16</span> <span class="month">Feb</span> <span class="year">2012</span></li>
            <li class="post_category">
              <a href="/?cat=17" title="Mac の投稿をすべて表示" rel="category">Mac</a>
            </li>
            <li class="post_comment">
              <a href="/?p=1617#respond" title="openFrameworks で画像を扱ってみるよ へのコメント">コメントを書く</a>
            </li>
          </ul>
        </div>
      </div>
      <div id="comments_wrapper">
        <div id="comment_header" class="clearfix">
          <ul id="comment_header_left">
            <li id="add_comment">
              <a href="#respond">コメントを書く</a>
            </li>
            
          </ul>
          <ul id="comment_header_right">
            
            <li id="comment_switch" class="comment_switch_active">
              <a href="javascript:void(0);">コメント ( 0 )</a>
            </li>
          </ul>
        </div>
        <div id="comments">
          <div id="comment_area">
            <ol class="commentlist">
              <li class="comment">
                <div class="comment-content">
                  <p>コメント 0</p>
                </div>
              </li>
            </ol>
          </div>
          
          
        </div>
      </div>
      <div id="previous_next_post_single">
        <div class="clearfix">
          <p id="previous_post"><a href="/?p=1613" rel="prev">C#でPowerPointのスライドを画像に書き出す</a></p>
          <p id="next_post"><a href="/?p=1625" rel="next">RabbitMQインストールしてみた（ついでにHomebrewを導入してみた）</a></p>
        </div>
      </div>
      <script src="/wp-content/plugins/shutter-reloaded//shutter-reloaded.js?ver=2.5" type="text/javascript"></script> 
      <script type="text/javascript">


        var shutterSettings = {"imgDir":"http:\/\/code-life.net\/wp-content\/plugins\/shutter-reloaded\/\/menu\/","imageCount":true,"FS":false,"textBtns":false,"oneSet":true};
        try{shutterReloaded.init();}catch(e){}  
      </script>
    </div>
    <div id="container"></div>
    <div id="right_col">
      <div class="side_box clearfix" id="side_meta_content">
        <ul id="social_link" class="clearfix">
          
          
        </ul>
        
      </div>
      <div id="side_top">
        
        <div class="side_box widget_recent_entries" id="recent-posts-3">
          <h3 class="side_title">最近の投稿</h3>
          <ul>
            <li>
              <a href="/?p=2903">ブログ移転しました</a>
            </li>
            <li>
              <a href="/?p=2893">[CakePHP2] CssController could not be found が発生する場合</a>
            </li>
            <li>
              <a href="/?p=2889">[MySQL] DB と ユーザーを作成する</a>
            </li>
            <li>
              <a href="/?p=2875">[CakePHP2] Htmlヘルパーで出力されるタグを変更する</a>
            </li>
            <li>
              <a href="/?p=2864">[CakePHP2] モデルからログインしているユーザー情報を取得する</a>
            </li>
          </ul>
        </div>
        <div class="side_box widget_recent_comments" id="recent-comments-3">
          <h3 class="side_title">最近のコメント</h3>
          <ul id="recentcomments">
            <li class="recentcomments">
              <a href="/?p=850#comment-521">連想配列のarray_push</a> に 通りすがり より
            </li>
            
            <li class="recentcomments">
              <a href="/?p=1895#comment-496">HTML5の新要素にidやclassを設定する理由</a> に ゆうり より
            </li>
            <li class="recentcomments">
              <a href="/?p=2726#comment-355">HiveServerを使用してPHPからHiveQLを実行する</a> に <a href='/?p=2766' rel='external nofollow' class='url'>ThriftHiveClient を少し便利にしてみた | Code Life</a> より
            </li>
            
          </ul>
        </div>
        <div class="side_box widget_archive" id="archives-3">
          <h3 class="side_title">アーカイブ</h3>
          <ul>
            <li>
              <a href='/?m=201304'>2013年4月</a>
            </li>
            <li>
              <a href='/?m=201303'>2013年3月</a>
            </li>
            <li>
              <a href='/?m=201302'>2013年2月</a>
            </li>
            <li>
              <a href='/?m=201212'>2012年12月</a>
            </li>
            <li>
              <a href='/?m=201210'>2012年10月</a>
            </li>
            <li>
              <a href='/?m=201209'>2012年9月</a>
            </li>
            <li>
              <a href='/?m=201208'>2012年8月</a>
            </li>
            <li>
              <a href='/?m=201207'>2012年7月</a>
            </li>
            <li>
              <a href='/?m=201206'>2012年6月</a>
            </li>
            <li>
              <a href='/?m=201205'>2012年5月</a>
            </li>
            <li>
              <a href='/?m=201204'>2012年4月</a>
            </li>
            <li>
              <a href='/?m=201203'>2012年3月</a>
            </li>
            <li>
              <a href='/?m=201202'>2012年2月</a>
            </li>
            <li>
              <a href='/?m=201201'>2012年1月</a>
            </li>
            <li>
              <a href='/?m=201112'>2011年12月</a>
            </li>
            <li>
              <a href='/?m=201111'>2011年11月</a>
            </li>
            <li>
              <a href='/?m=201110'>2011年10月</a>
            </li>
            <li>
              <a href='/?m=201109'>2011年9月</a>
            </li>
            <li>
              <a href='/?m=201108'>2011年8月</a>
            </li>
          </ul>
        </div>
        <div class="side_box widget_categories" id="categories-3">
          <h3 class="side_title">カテゴリー</h3>
          <ul>
            <li class="cat-item cat-item-12">
              <a href="/?cat=12" title="ActionScript3.0 に含まれる投稿をすべて表示">ActionScript3.0</a> (42)
            </li>
            <li class="cat-item cat-item-11">
              <a href="/?cat=11" title="Apache に含まれる投稿をすべて表示">Apache</a> (7)
            </li>
            <li class="cat-item cat-item-7">
              <a href="/?cat=7" title="C# に含まれる投稿をすべて表示">C#</a> (57)
            </li>
            <li class="cat-item cat-item-5">
              <a href="/?cat=5" title="CakePHP に含まれる投稿をすべて表示">CakePHP</a> (37)
            </li>
            <li class="cat-item cat-item-153">
              <a href="/?cat=153" title="css に含まれる投稿をすべて表示">css</a> (8)
            </li>
            <li class="cat-item cat-item-10">
              <a href="/?cat=10" title="eclipse に含まれる投稿をすべて表示">eclipse</a> (9)
            </li>
            <li class="cat-item cat-item-198">
              <a href="/?cat=198" title="Hadoop に含まれる投稿をすべて表示">Hadoop</a> (1)
            </li>
            <li class="cat-item cat-item-199">
              <a href="/?cat=199" title="Hive に含まれる投稿をすべて表示">Hive</a> (2)
            </li>
            <li class="cat-item cat-item-151">
              <a href="/?cat=151" title="HTML に含まれる投稿をすべて表示">HTML</a> (10)
            </li>
            <li class="cat-item cat-item-9">
              <a href="/?cat=9" title="Java に含まれる投稿をすべて表示">Java</a> (4)
            </li>
            <li class="cat-item cat-item-8">
              <a href="/?cat=8" title="javascript に含まれる投稿をすべて表示">javascript</a> (13)
            </li>
            <li class="cat-item cat-item-152">
              <a href="/?cat=152" title="JQuery に含まれる投稿をすべて表示">JQuery</a> (4)
            </li>
            <li class="cat-item cat-item-6">
              <a href="/?cat=6" title="Linux に含まれる投稿をすべて表示">Linux</a> (22)
            </li>
            <li class="cat-item cat-item-17">
              <a href="/?cat=17" title="Mac に含まれる投稿をすべて表示">Mac</a> (20)
            </li>
            <li class="cat-item cat-item-201">
              <a href="/?cat=201" title="Movable Type に含まれる投稿をすべて表示">Movable Type</a> (5)
            </li>
            <li class="cat-item cat-item-19">
              <a href="/?cat=19" title="MySQL に含まれる投稿をすべて表示">MySQL</a> (3)
            </li>
            <li class="cat-item cat-item-200">
              <a href="/?cat=200" title="Nginx に含まれる投稿をすべて表示">Nginx</a> (2)
            </li>
            <li class="cat-item cat-item-4">
              <a href="/?cat=4" title="PHP に含まれる投稿をすべて表示">PHP</a> (58)
            </li>
            <li class="cat-item cat-item-197">
              <a href="/?cat=197" title="Vim に含まれる投稿をすべて表示">Vim</a> (9)
            </li>
            <li class="cat-item cat-item-16">
              <a href="/?cat=16" title="Windows に含まれる投稿をすべて表示">Windows</a> (71)
            </li>
            <li class="cat-item cat-item-1">
              <a href="/?cat=1" title="未分類 に含まれる投稿をすべて表示">未分類</a> (45)
            </li>
          </ul>
        </div>
      </div>
      <div id="side_middle" class="clearfix">
        <div id="side_left"></div>
        <div id="side_right"></div>
      </div>
      <div id="side_bottom"></div>
    </div>
    <div id="footer">
      <ul id="copyright">
        <li>Copyright &copy;&nbsp; <a href="/">Code Life</a>
        </li>
        <li>Theme designed by <a class="target_blank" href="http://www.mono-lab.net/">mono-lab</a>
        </li>
        <li class="last">Powered by <a class="target_blank" href="http://wordpress.org/">WordPress</a>
        </li>
      </ul>
    </div>
  </div>
  <p id="return_top"><a href="#header">return top</a></p>
   
  <script type="text/javascript" src="http://static.evernote.com/noteit.js"></script> 
  <script type='text/javascript' src='/wp-content/plugins/akismet/_inc/form.js?ver=3.0.1'></script> 
  <script type='text/javascript' src='/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shCore.js?ver=3.0.9'></script> 
  <script type='text/javascript' src='/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushCpp.js?ver=3.0.9'></script> 
  <script type='text/javascript'>


        (function(){
                var corecss = document.createElement('link');
                var themecss = document.createElement('link');
                var corecssurl = "https://code-life.net/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shCore.css?ver=3.0.9";
                if ( corecss.setAttribute ) {
                                corecss.setAttribute( "rel", "stylesheet" );
                                corecss.setAttribute( "type", "text/css" );
                                corecss.setAttribute( "href", corecssurl );
                } else {
                                corecss.rel = "stylesheet";
                                corecss.href = corecssurl;
                }
                document.getElementsByTagName("head")[0].insertBefore( corecss, document.getElementById("syntaxhighlighteranchor") );
                var themecssurl = "https://code-life.net/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shThemeMidnight.css?ver=3.0.9";
                if ( themecss.setAttribute ) {
                                themecss.setAttribute( "rel", "stylesheet" );
                                themecss.setAttribute( "type", "text/css" );
                                themecss.setAttribute( "href", themecssurl );
                } else {
                                themecss.rel = "stylesheet";
                                themecss.href = themecssurl;
                }
                //document.getElementById("syntaxhighlighteranchor").appendChild(themecss);
                document.getElementsByTagName("head")[0].insertBefore( themecss, document.getElementById("syntaxhighlighteranchor") );
        })();
        SyntaxHighlighter.config.strings.expandSource = 'ソースを表示';
        SyntaxHighlighter.config.strings.help = 'SyntaxHighlighterについて';
        SyntaxHighlighter.config.strings.alert = 'SyntaxHighlighter\n\n';
        SyntaxHighlighter.config.strings.noBrush = '指定のブラシが見つかりませんでした: ';
        SyntaxHighlighter.config.strings.brushNotHtmlScript = 'HTMLスクリプトのオプションのためにブラシが構成されませんでした: ';
        SyntaxHighlighter.defaults['pad-line-numbers'] = true;
        SyntaxHighlighter.defaults['toolbar'] = false;
        SyntaxHighlighter.defaults['wrap-lines'] = false;
        SyntaxHighlighter.all();
  </script> 
  <script type='text/javascript' src='/wp-includes/js/comment-reply.min.js?ver=3.9.2'></script>
</body>
</html>
