私は手が検出されたときに手の周りに緑の矩形を作成する手検出コードを今すぐ持っています。しかし、私は別のjpeg画像で長方形を塗りつぶしたい。私はImagePatternを使用することを考えていましたが、イメージが私のプログラムではうまくいかないような形に埋め込まれていました。ここマットフレーム上にjpgイメージをロードするopencv java
は手の周りに長方形を作成するための私のコードである:
Imgproc.rectangle(frame, handsArray[i].tl(), handsArray[i].br(), new Scalar(0, 255, 0), 3);
フレームはマットであるとImgprocはOpenCVの、javacv関数です。
誰かがこの問題を助けてくれますか?私はあなたがこれらの手順でそれを行うことができます
よろしく
Green Rectangle Around The Hand that needs to be filled
BufferedImage bi = null;
try {
bi = ImageIO.read(new File(trollFace));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Mat mat = new Mat(bi.getHeight(), bi.getWidth(), CvType.CV_8UC3);
byte[] data = ((DataBufferByte) bi.getRaster().getDataBuffer()).getData();
mat.put(0, 0, data);
あなたの言ったことを実装しようとしました。まず、jpgをbufferedImageに変換してからマットに変換します(ソースイメージ 'frame'はマットです)。したがって、srcはフレームであり、src2は変換されたbufferImageです。私が間違っていることは分かりませんが、イメージはまだ表示されません。私がどのようにマットを作りましたかを見てください。src2 – hahahahahahahah
Java ImageIOを使ってイメージファイルを読む必要はありません。イメージを読み書きするためにOpenCV Imgcodecsクラスを使うことができます。あなたは今見ている質問が更新されました。 OpenCVのすべての画像フォーマットはMatオブジェクトでなければならないことに注意してください.VerifiedImageはOpenCVデータタイプではありません。 –
ありがとうございました!私は実験をして、これについてもっと読んで、写真の背景を透明にすることができます。 – hahahahahahahah