Make your own free website on Tripod.com
自宅サーバでLiveカメラ(2)
 STV680カメラだとR(赤)とB(青)が入れ替わってしまう!  (2003/01/11)

 長崎の高橋さんという方から「このページのix-1でキャプチャされた画像はR(赤)とB(青)が入れ替わってませんか?」というメールをいただきました。

←これもそうなんですが,曇り空ながら妙に赤茶けた写真です。
僕は「ホワイトバランスが狂ってるんだ」と思いこんでたんですが,そうではありませんでした。

これをご覧ください。
青リンゴではありません。
普通の赤いリンゴなのです。(^_^;)
うちのパソコンの周りは白とか黒ばっかりなので気がつかなかったというわけです。

高橋さんにソースコードの修正点を教えていただいてコンパイル,再インストールしたwebcamで撮った写真です。
今度は正しい色で記録されています。
Che-ez!SPYZなどでも同じ問題が発生するようですから,ここでハマっている人もいるんじゃないでしょうか。
貴重な情報だと思うので以下で修正方法をご説明しましょう。
高橋さん,ありがとうございました。m(_ _)m

まず,ここでxawtv_3.73.tar.gz をダウンロードしてきてtarします。 ( #tar xvzf xawtv_3.73.tar.gz )
解凍するとできるディレクトリxawtv-3.73のwebcamというディレクトリの中にあるwebcam.cをエディタで編集します。 (最新版のxawtv_3.82だと撮影間隔を決めるオプションdelayがうまく働きませんでした。なぜかなあ?)
webcam.cの真ん中あたりにこんな↓所があるんですが,高橋さんの説明によると「実はここは回転をかける所なんですがR,G,Bを一個ずつコピーしていますので,RとBのコピーを入替えればいいのです」ということだそうです。

    case 0:
	for (j = 0; j < oh; j++) {
	    int ir = (j+top)*w+left;
	    int or = j*ow;
	    for (i = 0; i < ow; i++) {
		rotimg[3*(or + i)]   = in[3*(ir+i)];  ←ここがR
		rotimg[3*(or + i)+1] = in[3*(ir+i)+1];←ここがG
		rotimg[3*(or + i)+2] = in[3*(ir+i)+2];←ここがB
	    }
	}
	*wp = ow;
	*hp = oh;
	break;

したがって,次のように修正します。

		rotimg[3*(or + i)]   = in[3*(ir+i)+2]; 
		rotimg[3*(or + i)+1] = in[3*(ir+i)+1]; 
		rotimg[3*(or + i)+2] = in[3*(ir+i)];  

# make
# make install
あとはmakeしてmake installするだけです。
webcamは,usr/local/bin/ にできてました。

$ /usr/local/bin/webcam

適当に.webcamrcを作ってからwebcamを実行してやります。
ちゃんとした色でキャプチャできてるはずですヨ。




Linuxで自宅サーバ 
\1980のジャンクPCで自宅サーバ  
ノートPCにNFSインストール  
自宅サーバでHPを公開しよう
CGIを使ってみよう
WebDAVを使ってみよう(1)
WebDAVを使ってみよう(2)
kernelの再構築(VineLinux2.5)
自宅サーバでLiveカメラ
自宅サーバでLiveカメラ(2)
Wormの攻撃
ADSLの導入とIPアドレス自動更新



【Back Home】