JavaCV を使用します (OpenCV ではありません)。私の目標はMat
、リソースとして保存されている画像からオブジェクトを取得することです。Mat
次に、これをopencv_imgproc.matchTemplate
メソッドに渡します。私はこの悪いコードを書くことができました:
InputStream in = getClass().getResourceAsStream("Lenna32.png");
BufferedImage image = ImageIO.read(in);
Frame f = new Java2DFrameConverter().getFrame(image);
Mat mat = new OpenCVFrameConverter.ToMat().convert(f);
これは場合によっては機能します。問題は次のとおりです。
透明度チャネル (つまり 32BPP) を持つ png 画像の場合、チャネルをシフトするため、次のように
R=00 G=33 B=66 A=FF
なります。R=33 G=66 B=FF
ターゲット環境では、使用できません
ImageIO
- オブジェクト変換が多すぎます
InputStream -> BufferedImage -> Frame -> Mat
。これを行うための簡単で効果的な方法が必要だと思います。
リソースからマットを作成する最良の方法は何ですか?