1

JavaCV を使用して顔を正常に検出しています。完全に正確ではありませんが、現時点では十分です。

ただし、テスト目的と将来を見据えて (これはより大きなグループ プロジェクトの一部にすぎません)、BufferedImage と Graphics.drawRect() を使用して面に四角形を書きたいと思います。

静的メソッドでJavaCVを使用して面に四角形を描画できるという事実を認識していますが、それは私が必要とする/したいことではありません。スキャン プロセスの後、ImageIO を使用してイメージをロードし、それに rect を書き込もうとすると、アプリケーションはネイティブ エラーで終了します。

openCV にイメージを「解放」するように命令する方法はありますか (それが問題の原因だと思うため、opencv はイメージ ファイルを解放しません)。

前もって感謝します

編集: エラーコード:

# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007fc705dafac4, pid=8216, tid=140493568964352
#
# JRE version: 7.0_21-b02
# Java VM: OpenJDK 64-Bit Server VM (23.7-b01 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [libjpeg.so.8+0x1eac4]  jpeg_save_markers+0x84

編集:

 cvReleaseImage(inputImage);
            cvReleaseImage(grayImage);
            cvClearMemStorage(storage);

あまりにも助けなかった

4

2 に答える 2

0

オペレーティング システムが実行されていることを確認し、ラップが 64 ビット OS で実行されている場合は、64 ビットの opencv をインストールします。このリンクはあなたを大いに助けるかもしれません

于 2014-05-02T07:34:42.250 に答える
0

Graphics.drawRect(); なしで単純な長方形を描画できます。Java で BufferedImage のピクセルを設定する良い方法があります。

try { BufferedImage img = ImageIO.read(new File("img.png")); int x, y; int width, hight; Color color = Color.black; y = 50; x = 50; width = 90; hight = 90; for(int i=x;i<=width;i++){ img.setRGB(i, y, color.getRGB()); img.setRGB(i, hight, color.getRGB()); for(int i=y;i<=hight;i++){ img.setRGB(x, i, color.getRGB()); img.setRGB(width, i, color.getRGB()); } g.drawImage(img, 0, 0, this); } catch (IOException e) { System.err.println("!!!IOException!!!"); }

これが役立つことを願っています。

ノーネーム

于 2014-05-01T09:28:56.723 に答える