ラベル Cpp の投稿を表示しています。 すべての投稿を表示
ラベル Cpp の投稿を表示しています。 すべての投稿を表示

2017年5月14日日曜日

cocos2d-x drawnodeのアニメーション

正しいかどうかはわからないがメモ

updateスケジュールを呼び出せるようにする

void update(float frame){

    draw->clear();

    std::vector<Vec2>poly;

    radius++;

    constexpr float pointN = 10;

    constexpr float Pi2 = M_PI * 2 / pointN;

    for(int i = 0; i < pointN; i++){

        poly.push_back(Vec2( pos.x + ( cos( Pi2*i ) * radius),
                             pox.y+ ( sin( Pi2*i ) * radius)  ));

    }

    draw->drawPolygon(&poly[0], pointN, Color4F(1.f, 1.f, 1.f, 1.f), 0, Color4F::BLACK);

}

上の例だと毎フレームごとに円が大きくなる
移動はrunactionメソッドでできる
以上

2017年4月23日日曜日

ofxAudioAnalyzer ubuntu16.04

俺のような雑魚にはかなり手間取ったので他の雑魚ちゃん&自分のためにメモ


  1. アドオンにhttps://github.com/leozimmerman/ofxAudioAnalyzerをいれる
  2. フォルダの名前変更"ofxAudioAnalyzer-master"の"-master"を消す //これは必要ないかも
  3. https://github.com/leozimmerman/ofxAudioAnalyzer/blob/master/essentia_compilation.mdとessentiaのサイトを参考にessentiaをコンパイル //essentiaのtestはよく失敗すると書いてあったので無視してもいい心配しないで
  4. essentia/build/src にlibessentia.aがあるのでコピー
  5. 自分のoFRoot/addons/ofxAudioAnalyzer/libs/essentia/lib/linux64 に貼り付ける(上書き) //これをしないとgcc5〜ではコンパイルエラーになる gcc5からはABIがCOWからSSOに変わったやらなんやらのため もともとアドオンにあるものはgcc4でコンパイルされたものっぽい コンパイラオプションでもさけられそう
  6. exmple-allAlgorithmsを試す
  7. makefileを少し変更 OF_ROOT=$(realpath 自分のoFのパス)
  8. make
  9. make run
  10. 成功!やったね


コンパイラーのバージョン違い&makefile初心者でかなり手間取ったこれで出来たよよよかったね
"cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)に対する定義されていない参照です"とかでたらライブラリとのバージョン違いを疑おう
コンパイラオプションでもさけれるみたい

2017年4月2日日曜日

openframeworks ofVboMesh で塗りつぶした円

mesh.clear();
mesh.setMode(OF_PRIMITIVE_TRIANGLE_FAN);

constexpr float ciclr = (PI * 2) / 6;

ofVec3f pos = { 300.f, 300.f,0.f };

for (int i = 0; i < 7; i++) {

mesh.addColor(ofColor(200, 255));
mesh.addVertex({ pos.x + cos(ciclr * i) * 100, pos.y + sin(ciclr * i) * 100, 0.f });

}

mesh.draw();

http://okasuke.hatenablog.com/entry/2014/01/12/224943

2017年1月8日日曜日

include 循環メモ

http://dixq.net/forum/viewtopic.php?f=3&t=11416

include循環で時間をつぶした

以下で解決

hppに#includeを書かず、class a;のようにこんなクラスがあるよと教える
cppにそのクラスをがあるヘッダを#include
あとは書くだけ

けど原因は他にある気がする

2016年12月1日木曜日

openFrameworks 画像の角度をカエル

ofPushMatrix(); //こっから
ofTranslate(x+w/2.f, y+h/2.f, .0f);
ofRotateZ(this->rotation); //ここに角度を入れる
ofTranslate((x+w/2.f)*-1.f, (y+h/2.f)*-1.f, .0f);
myImage.draw(x, y);
ofPopMatrix(); //ここまでのものに適用させる

参考url:: https://forum.openframeworks.cc/t/ofimage-mirror-amp-rotate-functionality/1716/9

ofimageではrotate90メソッドで回転できるけど90度づつ限定なので、小回りきかない
これで角度指定して回せる

2016年11月30日水曜日

openFrameworks box2d メモ

クラス

 ofxbox2d : box2dの世界、重力などを設定する
 ofxBox2dCircle : 重力を持った円
 ofxBox2dJoint : 車などのパーツに使う
           https://www.youtube.com/watch?v=lb-x6zJukIA
           http://gihyo.jp/dev/feature/01/box2d/0005

2016年10月14日金曜日

Qt + Opencv で顔部位をすべて目や口や鼻にするものを作った

よかったらみてね
汚いソースコードも入ってるよ
https://www.dropbox.com/s/5x9hmvbintxw2mw/KaoMeKutiHana.zip?dl=0

Qt ボタンのアイコンなどはリソースファイルに入れよう

じゃないとリリースのときにパスが違って表示されなくなっちゃうよ
もしリソースに追加しても表示されない時は一回コンパイルすると表示されるかもね

2016年10月11日火曜日

Qt thread run() に引数を入れたいと思ったら、代わりにQtConcurrentを使うといいよ

http://doc.qt.io/qt-4.8/qtconcurrentrun.html

Qt Creatorで使うときは.proファイルにQT += concurrent をつけよう
MainWindowクラス内で使うときは第一引数にthisを入れないと
Error: no matching function for callって言われちゃうよ たぶん
http://stackoverflow.com/questions/23702930/how-to-call-a-function-with-arguments-by-qtconcurrent


void MainWindow::Function(int i){}

void MainWindow::tekitou(){

    int u;

    QFuture future = QtConcurrent::run(this.Function, u);

}

2016年10月10日月曜日

Qt loopするとフリーズする時は

http://memotiyou.blogspot.jp/2012/01/qt-c-qthread_2497.html

色々調べたけど上方法が一番わかりやすい
しかし、古い方法らしい
http://qiita.com/hermit4/items/b1eaf6132fb06a30091f

(注:Qt3くらいの頃は自分でQThreadを派生してrunをカスタマイズする必要があった気がしますが、現在はQThreadそのままでイベントループが動作します)
と書いてある
けど長いの

2016年10月9日日曜日

MatからQpixmapへの変換

#include "mainwindow.h"

QPixmap MainWindow::MtoP(cv::Mat amat){

    cv::Mat mat;
    cvtColor(amat, mat,CV_BGR2RGB);//これがなかったら色が青になっちゃったよ

    return QPixmap::fromImage(QImage((unsigned char*) mat.data, mat.cols, mat.rows, static_cast<int>(mat.step), QImage::Format_RGB888));

}


参考URL::http://stackoverflow.com/questions/17127762/cvmat-to-qimage-and-back

Opencv3にはseamlessCloneっていうのがあるよ

画像と画像を自然に合体させるやつで、すごいよ
https://www.learnopencv.com/seamless-cloning-using-opencv-python-cpp/
でも自然すぎて何も変わってないと勘違いしてずっとおかしなとこないかと探してたよ
10時間つぶしたよ

2016年10月1日土曜日

OpenCV inpaintのためにマスク画像作る場合に初期化するときは cv::Mat::ones だと失敗しちゃう という俺の失敗

題名のとおりマスク画像作ってinpaintで遊ぼうと思ってマスク画像を作った

cv::Mat Mask = cv::Mat::ones(cvimg.size().height,cvimg.size().width,CV_8U);

これじゃ1で初期化されるのでだめ、zerosを使おう0000000000000000000000
cv::Mat Mask = cv::Mat::zeros(cvimg.size().height,cvimg.size().width,CV_8U);

これでオッケー

でも、元画像は1じゃないといいけないよ
cv::inapint(1 , 0 , 0, flag);

また半日以上つぶれた

OpenCV C++ inpaint

なぜか手間取ったのでメモ


    cv::Mat testimg = cv::imread("パス/org.jpg", -1);
    cv::Mat testmask = cv::imread("パス/msk.jpg",0);
    cv::Mat test;

    cv::inpaint(testimg,testmask,test,3 ,cv::INPAINT_TELEA );

    cv::imshow("test",test);

OpenCV cv::inpaint include Lib

#include <opencv2/photo/photo.hpp>

LIBS += C:/opencv-3.1.0-mingw/lib/libopencv_photo310.dll.a

2016年9月29日木曜日

Qt + opencv3 でcv::imread がうまくいかない時は

proファイルに
LIBS +=パス/libopencv_imgcodecs310.dll.a
を追加するといいよ
3.0からはimreadはimgcodecsにはいってるんだって へえ

2016年9月28日水曜日

Qt creator MinGW + opencv の設定

この動画を見ればわかるよ 動画はLinuxだけどWindowsでも同じだよ

やっとできた・・・

2016年9月25日日曜日

Qt5 OS標準のファイルエクスプローラーを開く

#include <QFileDialog>



QString loadimgName = QFileDialog::getOpenFileName(this,tr("Image Select")
                          ,"/home" 
                          ,tr("img (*.jpg *.jpeg *.png)"));











//これで画像を開けるよ
//以前はこれではOS標準のエクスプローラが開かれなかったらしいけどいまは標準のが開かれるらしい?あってる?
//参考::http://doc.qt.io/qt-5/qfiledialog.html の QFileDialog::getOpenFileName

2016年9月23日金曜日

QtDesignerで作ったボタンなどに処理を書くには

デザイン画面で作ったボタンを右クリックしてスロットへ移動を押す
シグナルを選択する。押された場合だとすればclicked()を選択
mainwindow.cpp画面に切り替わってその中に処理を書ける!
やったね

その処理の中で他のボタンやラベルを使うには、 ui->label->setText("iuiuiuiui");てな感じでいけるよ

もし、消したらコンパイルエラーがでるけど、エラーの場所のswitch文をぶち殺しますしたら大丈夫
widgetのスタイルシートの編集して消してもコードが勝手に追加されても消してくれないのでエラーになる
追加をしてくれても消してはくれないのだ


//こんなこと調べるのに一日潰した調べ方がクソなのか

QtDesignerで作られたヘッダーはui_なんとか.hになるよ

mainwindow.uiをQtdesignerで作ったものをuicっていうのを使ってヘッダーファイルを作るのか、めんどくさいなと思っていたらコンパイルするときに作ってくれるみたい

build-プロジェクト名debug の中にあるよ