2015年8月27日木曜日

3Dプリンターでつくる美しいガラスの器:MITの新技術

これはきれいだ。3Dプリンタの製造技術は日進月歩。これからもWatchしていこう。

http://wired.jp/2015/08/24/3d-printed-glass-mit/


  • 01-3d-printed-glass3
    1/4
摂氏1,000度にまで熱したカートリッジを使って、3Dプリンティングでガラスの器をつくる方法を、マサチューセッツ工科大学(MIT)の研究者たちが開発した。
ノズルの先からゆっくりと落ちる溶融ガラスを、層状に積み重ねて形をつくっていくものだ。
「G3DP」というこのシステムは、新構造や新素材の開発を進めるMITのMediated Matter Groupによって開発された。摂氏1,000度にまで熱した溶融ガラスを、アルミナやジルコニア、シリカを合成してつくられたノズルを通して、カートリッジから滴下させながら、微小な層をつくってガラス製品にしていく。
技術を披露する動画では、トロリとした蜂蜜のようになった溶融ガラスがノズルから落ちていき、重なって構造物の上になっていく様子がわかる。
ガラスをさまざまな形状やパターンで滴下させ、複雑でエレガントなデザインのものをつくることもできる。このシステムを使ってつくられた作品のいくつかは、2016年にニューヨーク市にあるクーパー・ヒューイット国立デザイン博物館で展示される予定だ。

2015年8月24日月曜日

Inboard 専用品の美しさとスタイリシュ

ブログの趣旨とは関係ないけど・・・

Inboard

M1™: The world's first powered skateboard with motors inside the wheels.


これはすごいスタイリッシュ。こんなものはいくつかあったけど、これはすごい。
1.平面のバッテリー
これによって、乗る板とバッテリが一体化して、きれいになった。

 No one should have to plan their day around electrical outlets and chargers. That’s why Inboard designed the world’s first electric skateboard with swappable battery packs. If you ever run out of power, simply swap the depleted Powershift battery with a fully charged back-up. 
Power Shift Battery™

2.インホイールモーター
こんな小さなタイヤでインホイールモーターとは、タイヤと別にモーターを使わなくてよくなったため、コンパクトになった。
 From the deck to the wheels, every detail of Inboard's product is designed to be incredibly easy and intuitive to use. Inboard's Rev Wheel technology allows for the rear wheels to be easily changed when they are worn. This can be done in ten seconds without the need for tools. We've thought about everything so that you will always be ready to ride.  
Rev Wheel™

値段は高くなるけど、これはきれいだな。専用品の美しさは素晴らしい。

でも、約$1400は高いと思う。




ローカルで定義したクラスのデストラクタの発生タイミングのコントロール(ブラケットの意味)

ローカルで定義したクラスを任意の場所でデストラクタを実行したくなりました。かなり特殊ケースでしょう。

やり方としては、{}で括る。

{
class a;

 処理
} ←ここでデストラクタ発生。

{ }は別に whileとかforとか関数定義でなくても使えます。前に人のソースを読んでいるときにあってなんでこんなことしているかわからなかったのですが、わかりました。そういえば、C++からはfor文で回すなかに変数を定義しても、次のループで同じ名前の変数のはずなのにエラーはでません。

どういう意味かというと、C++では、{ }の中でて定義したローカル変数は、その括弧の中のみ有効であるからです。「forやifなどの制御構文を持たないブロック」というらしいです。

ここでちと思うこととして、Forループの中にローカルのクラスを定義すると、ループごとにコンストラクタ・デストラクタが呼び出され、領域が定義されることとなる。これは処理が重くなる原因となるため、頻繁に呼び出すものはループの外に出す。当たり前のことであるが、{}の本当の意味を知ると、なるほどでした。

無知な私の学習となりました。

参考:
http://oshiete.goo.ne.jp/qa/6134667.html
http://tessy.org/wiki/index.php?XML%A1%A6YAML%B7%C1%BC%B0%A4%C7%A4%CE%A5%C7%A1%BC%A5%BF%CA%DD%C2%B8


2015年8月23日日曜日

ピクサー、御用達のソフトウェアをオープンソース化!

素晴らしい。どんなのかな?面白そう。

http://www.gizmodo.jp/2015/08/post_17965.html
http://graphics.pixar.com/usd/

150812newpixardemo.jpg


以前から、いくつかのソフトウェアのオープンソース化や無料配布に取り組んできたピクサー。またまた新たにソフトウェアをオープンソース化するというのです。素敵ですね。
今回オープンソースプロジェクトとして2016年夏までにリリースされる予定なのはUniversal Scene Description (USD)というソフトウェア。
このソフトウェアは、さまざまなDCC(デジタルコンテンツクリエーション)ツール間での作業を可能にします。ピクサーでは複数のアーティストが同時に同じアセット上で作業しているそうなのですが、そのコンセプトを一般化できるのです。
同社は、このUSDのコアとなる機能をなんと20年近くにわたって開発し続けてきたといいます。遡ると「バグズ・ライフ」の時代だそう。なつかしいですね…。
まだUSDは開発途上ではあるものの、「ファインディング・ドリー」(2016年公開予定)の製作過程では実際に1年近く使用されたそうです。
また、USDの配布パッケージには、VFX DCCに必要なプラグインやチュートリアル、Pythonバインディングなど…いろいろ含まれる予定だそう。
既にシーンファイル共有フォーマットAlembicがオープンソースとしてリリースされ成功したという事例があるのですが、今回のピクサーのオープンソース化がCGアニメ界にどのような影響をもたらすのか注目ですね。

image by Pixar
source: Animation Magazine
(阿部慶次郎)

米国で激増するドローンと航空機のニアミス事件

これでドローン規制の重要項目の一つが有人機との接触だったのか。当たり前の話だけど、納得。

http://blogos.com/article/129608/
https://www.washingtonpost.com/world/national-security/faa-records-detail-hundreds-of-close-calls-between-airplanes-and-drones/2015/08/20/5ef812ae-4737-11e5-846d-02792f854297_story.html

8月21日付け、ワシントンポストの一面です。題字下のトップ記事「自分勝手なドローン(rogue drone)が米国の航空域を塞いでいる」は、米連邦航空局(FAA)の内部報告書をすっぱ抜いた堂々たるスクープ記事です。
その内部報告書を元に、ワシントンポストが作成したグラフィックがこれ。全米で、民間航空機、軍用機とドローンとの接近遭遇(ニアミス)が頻発しているという戦慄の事実が迫ります。
とりわけ事件が頻発したのは今月16日の日曜日でした。午前8時51分、白いドローンがロサンゼル国際空港に着陸寸前のJetBlue機の左翼に現れて、パイロットを驚かせます。その5時間後、Allegiant航空が、同じ滑走路に近づいたときに4枚バネのドローンが機体の下を通り抜けました。
ドローンの飛行が厳しく制限されている首都ワシントンD.C.では、セスナ機が、上空の1,500フィート(約450m)付近を飛んでいるドローンを発見し、用心のために米軍機がスクランブル発進しました。
ケンタッキー州ルイビルでは銀色と白色のドローンが訓練飛行中の飛行機に衝突しそうになり、シカゴではユナイテッド航空機が3,500フィート(1,066m)の高度でドローンが通り過ぎたと報告しました。
そんなこんなでこの日は、全米で12の出来事が記録されました。(その全ては上のグラフィク左下のボタン操作で8月16日を選べは分かります)
昨年以前は、こうしたドローンと航空機のニアミスの報告は殆どありませんでした。しかし、急に盛り上がったブームで、規制のない小型ドローンが米国の空にひしめいていて、間一髪の報告が急増しているとのことです。
ところが、FAAは、今年のこうした事件が、いつ、どこで起きたかの詳細は秘密にし、通常は公文書である報告書の公開を拒み、その一方で、「間一髪」の事件がいつ、どこで起きたかだけを目立たたせようとしていた、ということです。
が、ワシントンポストは、数百ページに及ぶ「rogue-drone reports(自分勝手なドローン報告書」を入手するのに成功しました。入手先は、このようなFAAの秘密主義に反対する政府職員からだ、と堂々と書いています。FAAはこの報告書へのコメントを拒否しているそうですが、否定はしてないのですから、本物です。
ワシントンポストの長大な記事は、報告書にあるいろんなケースに言及していますが、そのうちのいくつかを紹介します。
・3月29日、フロリダのWest Palm Beachにあるゴルフ場近くでドローンがホバリングしていて、大統領警護のシークレットサービス(SS)が色めき立ちました。オバマ大統領がゴルフをしていたからです。SSは詳細については語りませんが、そうした状況に対処する手続き、プロトコルがあるそうです。
・2週間後の4月13日の正午過ぎ、白いドローンがホワイトハウス近くを飛行中との報告があり、米軍機がスクランブル発進しました。ドローンはワシントンDCを流れる小川沿いのモールをこえてアーリントン方向に消えたとか。
このふたつの出来事は、1月に広く報じられ、当ブログでも取り上げたホワイトハウス中庭へのドローン墜落事件があっただけに、当局者も神経質になっていることを表しているようです。
・7月31日付けの、国家安全保障省の発表によれば、「2012年以来、500件以上も、許可を受けていないドローンが、軍や政府、インフラなどの重要施設上空をウロウロとしていた」とのことです。
・軍用機も同様の目に遭っています。7月10日、空軍のF15のパイロットは、小型ドローンが50フィート(15m)以内まで接近したと報告。2週間後、海軍のT-45がアリゾナを飛行中、100フィート(30m)下をドローンが飛んでいたと報告しました。
・従来は考えられない高度でも飛んでいます。5月30日、Caribbean航空とJetBlueの乗組員が別々に「ニューヨークのJFK空港の25マイル南東の上空1万2千フィートで、カラーライトを点けたドローンを見た」と報告してきました。
・まだ衝突事故はありませんが、デルタ航空機からは二つの報告が。3月21日、ニューヨークのラガーディア空港で、左翼50フィートのところをドローンが飛んで行き、2 月24日には、反対方面からボーイング757に向かってきてたった100フィート上を飛び去ったそうです。
・もっと恐ろしいケースも。Wisconsin航空の場合は、5月10日、ノースカロライナ州上空5,000フィートで、ドローンが鼻先を通り過ぎたと報告し、別の同航空機は、その9日後、フィラデルフィアの外れあたりで、10フィート以内をドローンが通り過ぎたとか。
・大型航空機より低いところを飛ぶ小型機には、より脅威が高まります。単発機Piper-28のパイロットは6 月20日、コネチカット州上空でドローンを避けるために、激しい左旋回を強いられたとし、セスナ機からは、8月1日、皿洗い機ほどのドローンが50フィートまで近づいたと、報告しています。
エンジンが鳥を吸い込んで不調になった、という話はよく耳にします。それなら、ドローンがエンジンに吸い込まれれば、当然、事故に繋がりかねません。フロントガラスに激突、なんてことも考えたくない事態です。
しかし、Consumer Electronics Association(CEA:全米家電協会)の推定では、人気のドローン、今年は70万台も売れそうだということです。ますますニアミスの危険性は高まります。(ロイターの記事では、CEAは、ロイターに対し、今年は100万台以上売れると述べ、これは去年の倍、一昨年の7倍だとしています)
どう解決するのか。先のJFK、ラガーディアという巨大空港を抱えるニューヨーク州選出のチャールズ・シューマー(Charles Schumer)上院議員(民主)は、「衝突が起きるのは時間の問題だ」とし、上空500フィート以上や、空港や重要な空域での飛行を阻止するテクノロジー(geo-fencingというようです)の搭載を製造会社に義務付ける法律を導入する考えだそうです。
首相官邸にドローンが落下して、2週間も気づかれなかった今年4月の騒ぎ、なんだか、平和ボケニッポンの遠い昔の夢幻のようでもありますが、大丈夫かニッポン?

2015年8月22日土曜日

Carbon3DがGoogle Ventures他から1億ドルを調達―製造業で3Dプリントが実用化へ

3Dプリンタで量産化。すげー

http://jp.techcrunch.com/2015/08/21/20150820with-100m-in-funding-carbon3d-will-make-3d-manufacturing-a-reality/


3Dプリンターのスタートアップ、Carbon3Dは1億ドルの新たな資金の調達に成功した。これによって3Dプリンターの利用はプロトタイプ製造から製品量産の段階に飛躍することが期待される。
今回のシリーズCのラウンドをリードしたのはGoogle Venturesで、これに既存投資家のSequoia Capital、Silver Lake Kraftwerk、Northgate Capitalと新規のYuri Milner、Reinet Investments、F.I.Sが加わった。
Carbon3Dのプリンターはどことなくターミネーターの映画を思わせるが、実は共同ファウンダーのJoseph DeSimone自身が「ターミネーター2からインスピレーションを受けた」と書いている。このプリンターは現在一般的な積層式ではなく、化学的な光硬化プロセスを用いており、従来製品より出力速度が100倍も速いという。DeSimoneは次のように説明している。
Google VenturesのAndy Wheeler「Carbon3Dのテクノロジーは 3Dプリンティングをプロトタイプ用途から製品の製造の段階に推し進めることを可能にする力を持っている。その理由はまず第一に圧倒的なスピードだが、それに加えてきわめて広い範囲の素材が利用できることも重要だ」と述べた。
事実、Carbon3Dはこれまで使えなかった素材を用いてリモコンのケースから椅子の肘掛まで複雑な形状のパーツをプリント可能だ。
Carbon3Dはフォード・モーターズや特殊効果スタジオのLegacy Effectsを始め、すでに自動車、宇宙航空、家電などの企業十数社で採用されている。
Carbon3Dが出力するパーツの多くは、それまで射出成形によって製造されていた。射出成形には金型が必要になるため、製造量が少ない場合はきわめて高くついてしまう。しかし長期的にみればもっとも大きなインパクトがあるのは、Carbon3Dによってまったく新しい構造のパーツが製造できるようになることだろう。
たとえば航空機のフレーム材に使われている高張力鋼を最適の構造のプラスティックに置き換えてCarbon3Dで製造することができるようになるかもしれない。
Carbon3Dプリンターは現在ベータテス中だが、今年中に市販が開始される予定だ。

(翻訳:滑川海彦@Fac

2015年8月21日金曜日

Visual Studio TextBox / RichTextBoxで最後の行に移動(C++)

Visual StudioでWindowアプリを作っていて、現在の状況を表示するためにTextBox か RichTextBoxを使う場合がある。私はいいアイディアが浮かばなかったので、短絡的にこれらを使った。メッセージをたくさん入れていくと、毎回スクロールするのが面倒なので、最後の行が見てみたい。

ってことで、最後の行に移動するソース

Form1::richTextBox1->Text = "Message";
richTextBox1->SelectionStart = richTextBox1->Text->Length;
richTextBox1->Focus();
richTextBox1->ScrollToCaret();

参考
http://dobon.net/vb/dotnet/control/tbscrolltolast.html

2015年8月20日木曜日

OpenCV で別に取得した二つの画像を合成して表示

2つのWebカメラで取得した画像を1枚のWindowで表示させようと思い、チャレンジしていたら、アホなことで1時間ほど悩んでしまいました。

まず、やり方としては、

1.合成後のイメージを作る
2.合成前のイメージを合成後のイメージにコピーする領域を作り、2つを関連付ける。
3.合成前のイメージを合成後のイメージにコピーする。
4.表示

ではソースは。(簡易ソースなのでWebカメラの分は抜いています。また、合成前のイメージは640x480としています。)

// 合成前のイメージ Windowの準備
cv::Mat cam1image;
cv::Mat cam2image;
cv::namedWindow("Camera Image", CV_WINDOW_AUTOSIZE);

// 1. 合成後のイメージを作る
cv::Mat combinedImage(cv::Size(1280, 480), CV_8UC3);

// 2. 合成前のイメージを合成後のイメージにコピーする領域を作り、2つを関連付ける。
cv::Mat imageLeft(combinedImage, cv::Rect(0, 0, cam1image.cols, cam1image.rows));
cv::Mat imageRight(combinedImage, cv::Rect(640, 0, cam2image.cols, cam2image.rows));

// 3.合成前のイメージを合成後のイメージにコピーする。
cam1image.copyTo(imageLeft);
cam2image.copyTo(imageRight);

// 4.表示
cv::imshow("Camera Image", combinedImage);



ちなみに悩んでいたのは、2のところの3番目と4番目の引数を次のように書いていたからです。実行後にエラーがでます。
cv::Mat imageRight(combinedImage, cv::Rect(640, 0, cam2image.cols+640, cam2image.rows));

関数のマニュアルはちゃんと読みましょうって教訓でした。

参考:
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14117591624

ある日、森の中でロボットさんに出会うかもしれない

すごい安定感、。すばらしい。

http://jp.techcrunch.com/2015/08/19/20150817heres-a-video-of-a-6-foot-tall-humanoid-robot-stomping-through-a-forest/


「二足ロボットはそろそろトレイルランをしてみせてくれたりはしないんだろうか」。
そんなことを思っている人もいるかもしれない。実は、すでにそういう段階に達しているのだ。
森を駆けるロボットがいったい何者なのかといえば、もちろんATLAS(Googleが所有し、DARPAも出資するBoston Dynamicsが製作した2足ロボットだ)だ。これまで完全にコントロールされた室内において各種の実験が行われてきたが、ついにアウトドアに繰り出すこととなったのだ。
ごくごく短いものであるが、ATLASが太陽を浴びながら室外で活動する様子がビデオにおさめられている。
外部バッテリーとの間にブサイクなケーブルが存在したりもする(300ポンドのロボットにエネルギーを供給するのはなかなか大変なことなのだ)し、ビデオの最初の方はとくに、まるで酔っぱらいがふらついているようにも見える。しかしこれがかなり「スゴイ」ことであることは理解しておいて良いだろう。40年前には、二足歩行ロボット自体がSF世界のものだった。しかしついに「日常的」な存在になりつつあるのだ。
ちなみに、四足歩行ロボットについては蹴り飛ばされても歩き続ける強固さを備えるにいたっている。想像の世界にしかいなかった存在と、森で出会うようになる時代も近いのかもしれない。
原文へ
(翻訳:Maeda, H

2015年8月19日水曜日

349ドルのFotokite Phiは画期的GoPro用撮影ドローン―ケーブルで凧のように飛ばす

折り畳み式。

http://jp.techcrunch.com/2015/08/19/20150818fotokite/

ドローンはジャーナリズムにとって欠かせないツールになりつつある。ただ問題は一定以上のスキルを持った操縦者が必要なことだ。Fotokite はその問題を思いがけないユニークな方法で解決した。犬を散歩させるとき使うリードのような巻取り式ケーブルの先にドローンを取り付けたのだ。FotokiteにGoProを装着するとリードの持ち手を自動的に撮影する。距離は1 フィート(30センチ)から26フィート(8メートル)まで自由に変えられる。
今日(米国時間8/18)から、一般ユーザー向けのFotokite PhiというモデルがIndiegogoで予約受け付けを開始した。価格は349ドル(GoProは含まない)、2016年の早い時期に出荷予定だという。Fotokite ProはすでにBBCなどの放送局で採用されている。
このドローンは30センチほどの長さの筒状のケースにすっぽり収まるので、どこへでも簡単に持ち歩ける。また4基のプロペラは柔らかい素材が用いられ、プラスティックのガードで囲われるので安全性が高い。自由飛行するドローンを飛ばすのが危険な場所でも安全に空中撮影ができる。スイスとフランスでは人混みの付近でも飛行させる許可を得たという。
Fotokite-Phi_1
共同ファウンダーのLupashinがFotokiteのアイディアを得たのは、2011年にロシアで選挙の不正を巡って大規模なデモが行われたことだった。このデモはほとんど報道されないままで終わるところだったが、幸い都市の景観をドローンで撮影している写真家が居合わせた。そのビデオによってデモに参加した市民がいかに多数だったかが判明した。Lupashinはドローンがジャーナリズムに果たす役割の重要性を改めて認識したが、問題はドローンを飛ばす―特にデモや事件などの騒然とした現場でドローンを安全に飛ばすことの難しさだった。
そこでドローンを凧のようにケーブルでコントロールするというアイディアが生まれた。犬の散歩に使うのに似た自動巻取り式ケーブルを使えばドローン操縦者の必要をなくせるとLupashinは思いついた。GoPro装着マウントにケーブルを接続すればカメラは自動的につねに地上の持ち手の方向を向く。
Fotokite Phiが実際に使われている様子。

私はずいぶんたくさんのドローンを飛ばしてきたが、その大部分でクラッシュを経験している。しかしFotokite Phiを飛ばすのは簡単だ。円筒形のケースから本体を取り出して拡げ、軽くひねるように揺するとプロペラが回り始めるので、そっと手を離す。あとは適当な距離までケーブルを緩めていく。私はオフィっすの中でFotokiteを飛ばしながらあちこち歩きまわったがどこへもぶつけずにすんだ。
ケーブルのハンドルにはドローンの高度やカメラの向きを変えるリモコン・ボタンがついている。高度やカメラの向きを思ったとおりに設定するのは多少慣れがいる。しかし2本のジョイスティックを操る標準的なドローンのコントローラーに比べれば比較にならないほど簡単だ。Fotokiteを自由に操れるようになれば、市民ジャーナリストでも1人で空中撮影による取材ができる。
Fotokite Phi
ちなみに、一般ユーザー向けFotokite Phi とProの違いは飛行時間だ。Phiは約15分間飛行できる。また撮影可能時間はGoPro本体の能力による。これに対してProのケーブルは電源とデータ伝送が可能で、非圧縮でHDビデオをダウンリンクできる。つまり飛行時間にも撮影時間にも制限はない。
Fotokite Leash

2015年8月18日火曜日

米議会がドローン規制を検討、有人機との衝突を懸念

http://blogos.com/article/128660/



[ワシントン 14日 ロイター] - 違法なドローン(無人機)飛行の急増を受け、米国の上下両院で、特に空港付近におけるドローンの飛行を法的に規制しようとする動きが加速してきた。事情に詳しい関係筋が明らかにした。
米連邦航空局(FAA)は前週、民間航空機を含む有人機付近でのドローン目撃件数が急増しているとの報告を発表。米国で航空機のパイロットが目撃したドローンの数は、年初から8月9日までに650機を超えた。2014年は年間238機だった。このペースで持続すれば年末までに1100機程度になるとみられている。
議員らは、航空機が特に注意を要する離着陸時に無人機と衝突する事故が起きるのは時間の問題であり、大惨事を招きかねないと指摘している。 
法案の提出は早くても休会明けの2週間後になるとみられている。
関係筋によると、規制手段としては、違法な飛行をしているドローンを追跡・無力化する新技術のサポートや、操縦者に対する研修・飛行前の届け出・飛行中に当局が識別できるようトランスポンダーの搭載を義務付けることなどが検討されているという。
FAAのウエルタ長官は、議会の動きを歓迎する意向を表明。ドローンの違法飛行を行った操縦者に対し、罰金や禁錮刑など厳格な処罰を下す方針を示した。

2015年8月16日日曜日

OpenCV Mat型 初期化と要素へのアクセス

OpenCVのMat型は、基本的には画像のデータを入れておく型でありながら、行列演算にも使えます。掛け算とか基本的なことはさておき、データの入力方法でかなり悩んでしまったため、このします。

ここで紹介する入力方法は2つ。初期化と要素へのアクセスです。

初期化:
cv::Mat A = cv::Mat(6, 6, CV_64FC1);
double Adata[6][6] = { { 1, 0, 0, 0, 0, 0 },
{ 0, 1, 0, 0, 0, 0 },
{ 0, 0, 1, 0, 0, 0 },
{ 0, 0, 0, 1, 0, 0 },
{ 0, 0, 0, 0, 1, 0 },
{ 0, 0, 0, 0, 0, 1 } };
A = cv::Mat(3, 3, CV_64FC1, Rdata).clone();

注:Cloneの方がミスがなくて確実。遅くなるしメモリ量の問題もあるから注意

要素アクセス:
・1変数の型
変数名.at<型名>(行, 列)

例:代入(double)
cv::Mat A = cv::Mat(3, 1, CV_64FC1);
A.at<double>(0, 0) = (double)1.0;
A.at<double>(1, 0) = (double)1.0;
A.at<double>(2, 0) = (double)1.0;

・各要素がチャンネルなら、
変数名.at<型名>(行, 列)[チャンネルNo]

参考
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12128343222

2015年8月14日金曜日

OpenCV でUSBカメラの画像を表示(Windows 8, Visual Studio 2013)

OpenCVを使ってUSBカメラの表示をしたので紹介。なぜか参考にしたサイトの通りのソースでは動かなく、ちょっと悩んだので紹介。

1. プロジェクトの作成
とりあえず、Consoleプロジェクトで行きましょう。

2. プロパティの設定
プロジェクトのプロパティを開き、
C/C++->Additional Include DirectoriesにOpenCVのインクルードフォルダを追加
Linker->Additional Library DirectoriesにOpenCVのライブラリフォルダを追加
Linker->Input->Additional Dependenciesに以下のファイル名を追加
opencv_core2410d.lib
opencv_highgui2410d.lib
opencv_objdetect2410d.lib

3. Source
#include <iostream>
#include <opencv2\opencv.hpp>
#include <opencv2\highgui\highgui.hpp>

int _tmain(int argc, _TCHAR* argv[])
{
// デフォルトのカメラをオープン
cv::VideoCapture cap(0);
if (!cap.isOpened())
{
std::cerr << "camera cannot open" << std::endl;
return -1;
}

// ウィンドウを作成
cv::namedWindow("cap", CV_WINDOW_AUTOSIZE);

while (1)
{
cv::Mat frame;
// カメラからフレームを取得
cap >> frame;
// ウィンドウに表示
if (frame.size().height != 0 || frame.size().width!=0)
{
cv::imshow("cap", frame);
}

// 30 ms 待つ。キー入力があれば終了
if (cv::waitKey(30) >= 0) break;
}

return 0;
}

ここで、悩んだところは、
if (frame.size().height != 0 || frame.size().width!=0)
この1文。
参考のサイトにはないのだが、調べてみると、最初のフレームではCapからはデータは転送されず画面のサイズが0×0でAbortがでていた。2フレーム目からはちゃんと取得できていたので、ちょっと改造したのがこの1文です。もっといい方法があってり、ミスがあったら教えてください。

参考:
http://docs.opencv.org/3.0-beta/modules/videoio/doc/reading_and_writing_video.html
http://qiita.com/vs4sh/items/4a9ce178f1b2fd26ea30



2015年8月13日木曜日

Visual Studio 2013 (C++) で Windowアプリ(C++/CLR)の作成

1. プロジェクトの作成
New projectをクリック。
「Visual C++」の下の「CLR」を選択し、右の欄で、「空のCLRプロジェクト」を選択する。

2. Formの作成
「追加」→「新しい項目」をクリックする。(仮に名前はDefaultのMyForm.hとする。)
左欄で「Visual C++」→「UI」(ユーザインターフェイス)を選択し、右欄で「Windowsフォーム」を選択して、「追加」をクリックする。


3. エントリーポイントの作成(mainをどこにするかを決める)
「プロジェクト」→「プロパティ」をクリックする。
の欄で、「構成プロパティ」→「リンカー」→「システム」と選択し、右の欄で、「サブシステム」を選択し、右端に現れる「V」をクリックして、現れたリストから「Windows(/SUBSYSTEM:WINDOW)」を選択する。


左欄の「構成プロパティ」→「リンカー」→「詳細設定」を選択し、右欄の「エントリポイント」に、「main」と入力して、「OK」をクリックする。

4. メインソース作成
プロジェクト名.cpp に以下のソースを追加する。
#include "MyForm.h"

int main(
){
WinAppTest::Application::Run(gcnew WinAppTest::MyForm());
return 0;
}

5. 実行
下の画面がでたら成功

参考:http://homepage3.nifty.com/ishidate/vcpp13_6/vcpp13_6.htm

2015年8月9日日曜日

cvsba を Visual Studio 2013 で動かしてみる。

Bundle Adjustmentは、複数の画像の特徴点から特徴点の三次元位置とカメラの位置等を最適化する手法です。実際のところ、これを実現する手法はいくつかありますが、Bundle Adjustmentは最も精度が高いものです。しかしながら、もっとも計算メモリと計算量が必要です(これを減らす手法が様々提案されていますが割愛)。

これを実装するのは結構面倒だと思い、有名なのでいろいろライブラリがあるだろうと探してみると。Wikipediaが一番整理されてた。Bundle adjustment

いろいろあるけど、ロバストで様々なコミュニティで使われているsbaを使うこととした。で、とあるところにopencvのwapperとしてcvsbaがあり、インターフェースが楽と書いてあったので、cvsbaを動かしてみる。

1.ダウンロード
公式ページに行き、以下の二つのファイルをダウンロード
cvsba-1.0.0.tgz
cvsba_simple_test.tgz

2.CLapackのコンパイル
cvsbaにはCLapackが必要なので、ダウンロードしコンパイルしておく。詳細は、別のページを参照してください。

3.コンパイル
・cvsba-1.0.0のcvsba以下をプロジェクトの中に組み込む。具体的には、フォルダを作ってAdd Exist fileですべてのファイルを読み込むだけ。
・Properties でCLapackのインクルードのフォルダを追加
・Properties でCLapackのLinkerにライブラリのフォルダを追加
・Properties でCLapackのLinkerのAdditional Dependencyに以下のファイルを追加
libf2c.lib
blas.lib
lapack.lib
・cvsba_sample_testをコンパイルする。

4.実行
Initial error=40111.6, Final error=2.14049e-005
とでれば成功

詳細はこれから見ていき、応用してくとする。

CLapack インストール (Visual Studio 2013, Windows8)

使おうと思っているライブラリがClapackを使っているようなのでインストールしてみた。
インストールの手順を示す。

1.ダウンロード
CLapackのサイトにいってcmake用ライブラリをダウンロード。
掲載時点では、clapack-3.2.1-CMAKE.tgz
適当なところで展開。私の場合は、ライブラリ関係はC:\devにおいているのでその下で展開した。

2.cmake
cmake で上記のフォルダを指定しconfigure してから Generate
(configureでwarningがいくつかでるが無視する。)

3.コンパイル
Buildの以下にある
clapack.sln
を実行。ここで、素直に全コンパイルをやるとエラーが大量にでる。ちゃんと、readme.installを読むと、以下の順番でコンパイルと書いてある。
 f2c libraries
 BLAS library
 main library
すると上手くいく。

4.Include と Libraryファイル
コンパイル結果のファイルの置き場所は以下(c:\dev\ に展開した場合)
Include:
C:\dev\clapack-3.2.1-CMAKE\INCLUDE
Library:
C:\dev\clapack-3.2.1-CMAKE\build\BLAS\SRC\Debug\blas.lib
C:\dev\clapack-3.2.1-CMAKE\build\F2CLIBS\libf2c\Debug\libf2c.lib
C:\dev\clapack-3.2.1-CMAKE\build\SRC\Debug\lapack.lib

Ref:
http://tauyosi.blog91.fc2.com/blog-entry-6.html
http://momose-d.cocolog-nifty.com/blog/2014/06/visual-studio-2.html

2015年8月2日日曜日

低価格な光造形3Dプリンタ

約70万 光造形でこの値段はすごい

http://dwslab.com/xfab/

XFAB FEATURES

The first high-end 3D printer at a consumer price

printing your dreams


image_front_close+logo


Materials

.
.
.

Turn materials into solid

Our patented technology can turn a much wider variety of materials into solid: acrylate resin, ABS, polypropylene, rigid opaque, transparent, rubber, castable wax and ceramic.
front-open-H650
lato-open-H650
.
.

Intelligent material changing

Quick material change: intelligent cartridges,
no leakages, no need of handling liquids, no tray consumption costs.

Material Range


Standard acrylate, amber

General purpose.

ABS-like, grey

High-impact resistant, functional parts, snap-fit, casings

ABS-like, white

High-impact resistant, functional parts, snap-fit, casings

Polypropylene-like

Flexible, snap-fit, casings, components, lab equipment

Rigid opaque, grey

Prototypes, toys, high-detail models, marketing models

Transparent

Clear prototypes, liquid flow visualization, light cases

Ceramic nano-filled, light blue

Static thermal resistance tests, high definition models

Rubber-like, black

Handles, gaskets, footwear, ergonomic tests, functional parts

Rubber-like, transparent

Functional parts, medical devices

Castable wax, transparent

 Lost-wax casting patterns

Software

XFAB-LOW-RESO-1722

NAUTA™ XFAB

Proprietary 3D editing software NAUTA™ XFAB Edition

SUPPORT

Automatic support genaration

Removal Risk free

Instant support removal, no risk of damaging the models

Economics

XFAB-LOW-RESO-1726

Affordable price

No material wastage

No tray cost

Technical Specifications


3D printing method
Laser Stereolithography
Working area
Ø 180×180 mm
Laser source
Solid State BlueEdge® BE-1300X
Slice thickness
10-100 microns
Minimum feature size
80 microns
Scanning method
Galvanometer
Software
XFAB Controller, Nauta™ XFAB Edition
Input file format
.stl, .slc
Machine size
420x638x590 mm
Operating Temperature and Humidity
22°-25°C/60%
Power supply
AC 230/115V/50-60 Hz

Gallery