1

我正在使用 JavaCV 成功检测人脸,它并不完全准确,但目前已经足够好了。

但是,出于测试目的和展望未来(这只是一个更大的小组项目的一部分),我想使用 BufferedImage 和 Graphics.drawRect() 在面上写入矩形。

我知道您可以使用带有静态方法的 JavaCV 将矩形绘制到面孔上,但这不是我需要/想要做的。如果我在扫描过程之后尝试使用 ImageIO 加载图像并尝试向其写入矩形,则应用程序以本机错误结束。

有什么方法可以命令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 位操作系统上运行,请安装 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 回答