質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
openFrameworks

openFrameworksは、C++で記述されたライブラリ群です。既存のライブラリの設定なしで使用できるため「糊」のようなツールキットと呼ばれています。簡単なコードだけで様々なグラフィックスやインタラクションをデザインすることが可能です。

Q&A

0回答

2015閲覧

openframeworksでofxMultikinectV2から取ってきたs画像をofxCvやofxOpenCVでいじる方法

nami634

総合スコア188

openFrameworks

openFrameworksは、C++で記述されたライブラリ群です。既存のライブラリの設定なしで使用できるため「糊」のようなツールキットと呼ばれています。簡単なコードだけで様々なグラフィックスやインタラクションをデザインすることが可能です。

0グッド

0クリップ

投稿2016/07/25 17:01

openframeworksでofxMultikinectV2から取ってきたIR画像をofxCvやofxOpenCVでいじる方法がわかりません。

現状、IR画像をフレームバッファに描画する時にシェーダーつかって処理して、フレームバッファからピクセル読み出して、アルファを消してRGBにしてofxOpenCVのimageにしています。
しかし、画像自体は出るのですが、画像がダブって表示されてうまく写りません。

誰か、教えていただけないでしょうか?

ofApp.h

C++

1class ofApp : public ofBaseApp{ 2 3 public: 4 void setup(); 5 void update(); 6 void draw(); 7 8 void keyPressed(int key); 9 void keyReleased(int key); 10 void mouseMoved(int x, int y ); 11 void mouseDragged(int x, int y, int button); 12 void mousePressed(int x, int y, int button); 13 void mouseReleased(int x, int y, int button); 14 void mouseEntered(int x, int y); 15 void mouseExited(int x, int y); 16 void windowResized(int w, int h); 17 void dragEvent(ofDragInfo dragInfo); 18 void gotMessage(ofMessage msg); 19 20 ofxMultiKinectV2 kinect; 21 ofTexture texture1; 22 ofTexture texture2; 23 ofxPanel gui; 24 ofxTurboJpeg turbo; 25 ofShader irShader; 26 ofxCvGrayscaleImage irImage; 27 ofFbo frameBuffer; 28 ofPixels irPixels; 29 30 int threshold; 31 int width; 32 int height; 33 cv::Mat mat; 34}; 35 36static string irFragmentShader = 37STRINGIFY( 38 uniform sampler2DRect tex; 39 void main() 40 { 41 vec4 col = texture2DRect(tex, gl_TexCoord[0].xy); 42 float value = col.r / 65535.0; 43 gl_FragColor = vec4(vec3(value), 1.0); 44 } 45 );

ofApp.cpp

C++

1void ofApp::setup(){ 2 ofBackground(255, 255, 255); 3 ofSetVerticalSync(true); 4 ofSetFrameRate(60); 5 kinect.open(true, true, 0, 2); 6 kinect.start(); 7 irShader.setupShaderFromSource(GL_FRAGMENT_SHADER, irFragmentShader); 8 irShader.linkProgram(); 9 width = 2585; 10 height = 1081; 11 12 irImage.allocate(width, height); 13 frameBuffer.allocate(width, height); 14} 15 16//-------------------------------------------------------------- 17void ofApp::update(){ 18 kinect.update(); 19 if(kinect.isFrameNew()){ 20 texture2.loadData(kinect.getIrPixelsRef()); 21 if (texture2.isAllocated()) { 22 frameBuffer.begin(); 23 irShader.begin(); 24 texture2.draw(0, 0, width, height); 25 irShader.end(); 26 frameBuffer.end(); 27 frameBuffer.readToPixels(irPixels); 28 29 unsigned char pixs2[width*height*3]; 30 for(int i = 0; i < width*height; i++) 31 { 32 pixs2[i*3] = irPixels[i*4]; 33 pixs2[i*3+1] = irPixels[i*4]; 34 pixs2[i*3+2] = irPixels[i*4]; 35 } 36 ofPixels pixels; 37 pixels.setFromPixels(pixs2, width, height, GL_RGB); 38 irImage.setFromPixels(pixs2, width, height); 39 } 40 } 41 42} 43 44//-------------------------------------------------------------- 45void ofApp::draw(){ 46 irImage.draw(0.0, 0.0, 960, 540); 47 ofDrawBitmapStringHighlight(ofToString(ofGetFrameRate()), 10, 20); 48 ofDrawBitmapStringHighlight("Device Count : " + ofToString(ofxMultiKinectV2::getDeviceCount()), 10, 40); 49} 50

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問