【Java】Auto-UnboxingでのNullPointerExceptionにご注意を
Nullに対してAuto-Unboxingが働くと、NullPointerExceptionが発生する。
なのでラッパークラスとプリミティブで比較を行う場合は、思いがけない場所で落とし穴にハマってしまう。
例:Demo1.java
public class Demo1 { public static void main(String[] args) { long hoge = 128L; Long fuga = null; System.out.println(hoge == fuga); // NulPointerExceptionが発生する } }
少しでもnullが入る可能性があるのであれば、しっかりと比較する前にNullのチェックをすれば良い。
例:Demo2.java
public class Demo2 { public static void main(String[] args) { long hoge = 128L; Long fuga = null; System.out.println(fuga != null && hoge == fuga); // falseが出力される } }
【Python】OpenCVのVideoWriterの落とし穴
動画の出力処理を作成していてハマったので備忘録としてメモ。
OpenCVのVideoWriter()を使って動画ファイルを吐き出した時、その動画がプレイヤーで再生できないというトラブルに陥った。
原因としてはコーデックの問題などたくさん考えられたが、今回のケースは結論から言うとVideoWriter()のコンストラクタで指定する[isColor=True]が問題だった。
この[isColor]を省略するとTrueが与えられる様になっているのだが、この変数の意味するところはTrueであれば(正確には偽でなければ)エンコードの際に色情報を期待して色々と吐き出し処理をする。
今回僕がハマったのは、実は元の動画をグレースケール化した動画を作成しようとしていたためにこの事象に陥ってしまった様だ。
ちゃんと[isColor=False]を与えてやると、吐き出した動画ファイルは正常に再生できたとさ。