DOSEIの日記

技術メモ+日常ログ

面接官「特技はR-CNNによる肖像画検出とありますが?」 KTGW君 「はい。紙幣の肖像画検出です。」 面接官「R-CNNとは何のことですか?」 KTGW君 「Regions with CNN の略で、領域候補をディープラーニングで求めます。」 面接官「え、ディープラーニング?」…

Range based for の為の組み合わせ生成イテレータ

以下の例は昔のバージョンです。最新版は github に置いてみました。 github.com 実験で、全組合せに対して繰り返し処理をしたい時に使う。 先に使用例。 C++11 以降で使える range-based-for 文を使っているので、 gcc なら -std=c++11 (or -std=c++0x) が…

はてなブログに移行してみた。

iBus 1.5 の日本語入力

とりあえず ibus 1.5 でググってから読むといいと思います。Fedora 20 あたりから、日本語入力が iBus 1.5 になった。クリーンインストールした直後だと、日本語入力を行うために Super-space で切り替える。コンパネの「地域と言語」をみると、初期状態で「…

Fedora に povray を入れるには

ATrpms で配布されているので、以下のサイトに行ってリポジトリを登録するパッケージを入れる。 http://packages.atrpms.net/name/atrpms-repo/

bash で空白区切りの数値文字列の符号を反転する。

つまり、 100 20.4 -1.0 を -100 -20.4 1.0 にしたいという話。 val="100 20.4 -1.0" negval=-${val// / -} # 頭の - を忘れずに。 negval=${negval//--/} echo $val echo $negval

Fedora 19 の TeX 環境

Fedora 19 で日本語の TeX 環境を入れるには、少なくとも texlive-ptex を入れる必要がある。 texlive-japanese や texlive-cjk では、なぜか ptex が入らない。もし、 unicode 対応の uptex, uplatex を使う場合は、 texlive-uptex をいれる。だが、これだ…

Qt Creator で svn+ssh のリポジトリを扱う

svn+ssh でアクセスする Subversion リポジトリのワーキングコピーを扱う場合、 SSH の通信にパスワードが必要になる。 Qt Creator は、オプション→バージョン管理システム→概要タブの、 「SSH プロンプトコマンド」のコマンドを呼び出して、パスワード入力…

SSH の config のパーミッションエラーを解決する

Cygwin でファイルを作成すると、グループが "なし" になる。で、この状態だとグループのパーミッションが rw となって、これを消すことができない。つまり、 chmod g-rw をしても無視される。 ~/.ssh/config はユーザ以外のパーミッションを無しにしなけれ…

面接官「特技は高階グラフカットとありますが?」 ASK君 「はい。高階グラフカットです。」 面接官「高階グラフカットとは何のことですか?」 ASK君 「3つ以上のボクセルからなるクリークに依存するエネルギー最小化です。」 面接官「え、クリーク?」 ASK君…

Gnome Tweak Tool の設定

「ウィンドウ」の "Modifier to use modified window click actions" っていうのは(たぶん、右側がドロップダウンボックスに隠れて読めないのだが)、従来 alt 押しながらウィンドウをドラッグすると、ウィンドウが移動するといった機能の特殊キーのこと。 …

colorize

colorize は、 fill で指定した色を指定した比率で画像全体にアルファブレンドする。 各チャンネルごとに比率をわけることもできる。値は、単位を省略すると % になるらしい。 $ convert in.png -fill red -colorize 50% out.png # 全体に赤みが付く $ conve…

OpenCV のサンプルディレクトリ

Fedora 18 で、 opencv-devel-docs (2.4.3-3) を入れると、 サンプルが /usr/share/OpenCV/samples と /usr/share/opencv/samples に分かれてるんだけど、これはパッケージングのミスだろうか? ソースパッケージとか見た方がいいのかもしれないけど、時間な…

Mat_ の (本当の) 罠

id:DOSEI:20130306:p1 の訂正記事。のつもりだったけど、まだ理解が不十分だったので以下の文章は治す予定。うのむな。 まとめ cv::Mat_ を関数の引数の型にしてはいけない。 理由 cv::Mat_ は、 cv::Mat の型を固定した薄いラッパーです。 Mat は任意の型を…

cv::Mat_ を使う場合の注意。

以前ここにあった記事は、見えなくしてあります。cv::Mat_::type() などは、 cv::DataType::type などを返すので、元々が何の型の Mat をラッピングしているかは調べられない…。

Fedora 18 の Vim のスプリッタをマウスでぐりぐりする

Fedora 18 の vim は、ウィンドウのスプリッタがなぜかマウスで動かせない。これは、 ttymouse に xterm が自動指定されているせいらしい。 通常、自動認識によって xterm2 となるのだが(少なくとも今までのバージョンや、 Ubuntu などは)、この認識に失敗…

Povray を Fedora 18 にインストールする

Fedora 18 から、 povray が削除されてしまい、 そもそも Fedora には povray パッケージがなく しかもサードパーティリポジトリにも Fedora 18 用がないので、自力でビルドしたい。まず、 ATrpms にある src.rpm をダウンロードする。 $ wget http://dl.atr…

Windows 7 マシンを無線ルータ化する(アドホック接続)

有線でインターネッツできるようにする 「ネットワークと共有センター」を開く 「アダプターの設定の変更」をクリック(「ネットワーク接続」の画面になる) 今つながってる有線 LAN アダプタのプロパティを出す 「共有」タブで、「ネットワーク云々」という…

Fedora 18 での特殊キー設定

id:DOSEI:20120326:p1 に書いたことが、 Fedora 18 になったらできなくなってしまった。Gnome3 のオーバレイ (アクティビティの画面?) を無効にすることができるらしい (前はハードコードされてるからできない、っていう話だった気がするが、改善されたのだ…

なす角

y 軸 (0,1,0) と適当なベクトル (a,b,c) のなす角をプログラムで求めるには、どの式を使えばより正確に求まるのだろうか。 を acos() で計算 小数で割り算して渡すので、精度の問題がある。 [−1, 1] をはみ出すとエラーとなることに注意が必要。計算誤差でそ…

行列初期化の罠

プロローグ よーしパパ、要素が 0 で初期化された行列つくっちゃうぞー cv::Mat A(150, 100, CV_32S, 0); A.at<int>(20,10) = 30; コンパイルも通ったし、バッチリだ! エピローグ セグフォー! 後日談 cv::Mat のコンストラクタはたくさんあり、そのなかには値で</int>…

Windows 8 のあれこれ

【確認事項】アップグレードとは、既存のライセンスを上書きして、新しいライセンスに移行すること。技術的であれ、契約上であれ。 Windows 7 の場合「アップグレード版」では、 OS が既にインストールされている PC でないとクリーンインストールできないよ…

2012年08月28日のツイート

window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…

2012年08月27日のツイート

window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…

2012年08月26日のツイート

window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…

2012年08月25日のツイート

window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…

2012年08月24日のツイート

window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…

2012年08月23日のツイート

window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…

2012年08月22日のツイート

window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…

2012年08月21日のツイート

window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…