pythonでmatplotlibにImagemagicを連携出来なかったので、mp4からgifを作成しました。
順序としては
必要なソフトをインストール
sudo apt-get install libav-tools imagemagick
変換したいmp4があるフォルダに移動して
-rオプションでfpsを設定しmp4を画像にバラします。
avconv -i input.mp4 -r 10 -f image2 image-%03d.jpg
input.mp4は変換したい元mp4データです。
そしてばらした画像をGIFに合成します。
convert -delay 10 -loop 0 image-*.jpg output.gif
まあ下記サイト様をそのまま実行しただけなんですけどね。
参考サイト:http://kivantium.hateblo.jp/entry/2015/02/02/165936
参考サイト様ありがとうございます、おかげでGIFが作れて心がうきうきしてます。
ちなみにubuntu14.04でmatplotlibにImagemagicを連携する方法知っている人がいたらどなたかご教授を〜
2016年2月19日金曜日
2016年1月1日金曜日
2015年12月30日水曜日
Numpyのベクトル演算時の注意
久しぶりの投稿だなー
pythonでベクトル演算やらそうとしたら1*2と2*1の掛け算で1*0じゃあ演算できねえよって怒られた。
でそのときは
np.matrix((i-w.mean(0)))
と.matrixと入れて行列に直したら解決したとさというお話し
pythonでベクトル演算やらそうとしたら1*2と2*1の掛け算で1*0じゃあ演算できねえよって怒られた。
でそのときは
np.matrix((i-w.mean(0)))
と.matrixと入れて行列に直したら解決したとさというお話し
2015年6月17日水曜日
メンバ関数を関数ポインタで代入
メンバ関数を関数ポインタで代入しようとしたら四苦八苦してしまったので、メモメモ…
最初はstd::functionを使用してうまくできないかなーってやってたんだけど無理でした、はい
でboostを使ったところすんなりできました、はい。 ということで以下にコードをー
class A
{
void add(boost::function < void () > _a);
}
class T:public A
{
void start();
...
void write();
}
void start()
{
boost::function func= boost::bind(&Serial::write,this);
this->add(func);
}
でできました。
やっぱりboostってすごいですね、後関数ポインタが理解できていないので勉強しないとですね…
最初はstd::functionを使用してうまくできないかなーってやってたんだけど無理でした、はい
でboostを使ったところすんなりできました、はい。 ということで以下にコードをー
class A
{
void add(boost::function < void () > _a);
}
class T:public A
{
void start();
...
void write();
}
void start()
{
boost::function
2015年3月21日土曜日
Vectorのイテレータ破壊
C++でVectorを用いたプログラムを書いていたときに起こった事です。イテレータでVectorの指定要素にアクセス出来るようにし、最後にその要素にアクセスした時に範囲外の要素にアクセスしていますと言うエラーが出ました。いやいやおかしいだろうと思ってデバッグで順に見ていくと(開発環境はVC++2013)、イテレータの値が楽しい事になっていました。イテレータの破壊が起こったのはpushbackを実行した直後に起こっていました。どうやらpushbackやらeraseを行うとイテレータの破壊が起こるっぽい。
Vector自体が一定の領域を持っていて、領域が足らなくなると新しい領域を確保してそちらに移ってしまいます。その時古い領域は解放されます。ですので要素に何らかの変化が起こった時イテレータが指し示す場所が不正となってしまう事があるみたいです。
今回は元々要素数がどれくらい使うか分かっていたのでreserveをする事でこの問題は解決しました。
2015年3月18日水曜日
クラスで引っかかったこと
C++でクラスを書く時に引っかかったことを書きます。
クラスの配列メンバは宣言と同時に初期化することができません。そのため、コンストラクタ時に多次元配列でマップを実装しようとしても
Dijkstr::Dijkstr(){
cost_temp[V][V] = {
{ INF, 2 , 3 , INF , INF },
{ 2 , INF , 4 , INF , 10 },
{ 3 , 4 , INF , 1 , INF },
{ INF, INF , 1 , INF , 2 },
{ INF, 10 , INF , 2 , INF }
};
}
と記述するとエラーをはいてしまいます。ここで小一時間ぐらい悩んでmemcpy関数の存在を思い出しました。
memcpyの使い方としては
memcpy(void *str1,void *str2,size_t len)
str2からstr1にlenバイト分コピーするといったものです。
memcpyを用いて
Dijkstr::Dijkstr(){
static int cost_temp[V][V] = {
{ INF, 2 , 3 , INF , INF },
{ 2 , INF , 4 , INF , 10 },
{ 3 , 4 , INF , 1 , INF },
{ INF, INF , 1 , INF , 2 },
{ INF, 10 , INF , 2 , INF }
};
memcpy(cost, cost_temp, sizeof(cost_temp));
}
として解決しました。
登録:
コメント (Atom)
