我使用JavaCV成功检测到面部,但目前还不完全准确,但还不够好。
然而,出于测试目的并展望未来(这只是更大的组项目的一部分),我想使用BufferedImage和Graphics.drawRect()在面上写入矩形。
我知道你可以使用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 :(得分: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!!!");
}
我希望这会有所帮助。
NONAME
答案 1 :(得分:0)
检查您的操作系统是否正在运行,如果您的膝盖在64位操作系统上运行,请安装64位opencv。This link可能对您有所帮助