2013-06-01 42 views
1

我使用JavaCV成功檢測到人臉,但此時並不完全準確,但足夠好。但是,爲了測試目的和展望未來(這只是更大組項目的一部分),我想使用BufferedImage和Graphics.drawRect()將矩形寫入到面上。JavaCV正常工作/在面部檢測後寫入BufferdImage

我知道你可以通過靜態方法使用JavaCV將矩形繪製到人臉上,但這不是我需要/想要做的事情。 如果我在掃描過程後嘗試使用ImageIO加載圖像並嘗試向其寫入rects,則應用程序以本地錯誤結束。

有什麼辦法可以命令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); 

沒有幫助過

回答

0

可以繪製簡單的矩形無Graphics.drawRect( ); Theres在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!!!"); }

我希望這將有助於。

NONAME

0

檢查操作系統運行,並安裝64位OpenCV的,如果你的膝蓋是在64位操作系統上運行。 This link可能會幫助你很多