0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaCVでByteArrayからMat変換の備忘録

Posted at

JavaCVで、ByteArrayからMatに変換するときの備忘録。

JavaのOpenCVで画像変換をするためには、OpenCVの導入が必要になる。
ただ、配布可能パッケージとして利用を考えたとき、まだ自分ではうまく取り廻せないためJavaCVで乗り切れないかと考えた。
その際、Matの作成時に2byte文字(日本語等)のパスがJavaCV、OpenCVでは読み込めずエラーになるため、調べたところByteArrayからMatに変換すれば可能といった記事がいくつか出てきた。
しかし、NativeなOpenCVを利用せず、JavaCVを利用したByteArrayからMat変換方法がなかなかヒットせず、途方に暮れていたところ海外のサイトで対処方法を見つけたため、備忘録として残す。
※肝心のサイトがどこかを忘れた、、、

ConvertMat.java
public static Mat convertMat(Path sourcePath){
    // 念のため引数のPathをURIに変換
    URI srcUri = sourcePath.toUri();
    try(ByteArrayOutputStream bos = new ByteArrayOutputStream()){
        // URIに変換したPathを格納
        Path srcPath = Paths.get(srcUri);
        Files.copy(srcPath, bos);

        // JavaCVのjavacpp.BytePointerに渡してMatとして格納
        return imdecode(new Mat(new BytePointer(bos.toByteArray())),IMREAD_ANYDEPTH | IMREAD_ANYCOLOR);
    
    } catch (IOException e){
        e.printStackTrace();
    }
    return null;
}

でByteArrayからMatへの変換はひとまず可能。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?