【发布时间】:2014-06-29 02:40:38
【问题描述】:
我正在制作自己的图像处理应用程序,它完全在 BufferedImage 中运行。 现在我在 [OpenShift.com] 的博客中偶然发现了人脸检测的代码 现在我想将该代码集成到我自己的 GUI 应用程序中。但是作为人脸检测器代码面临的问题,图像是 iplImage 对象的一个实例,为此我需要首先将缓冲图像转换为 IplImage,以便该方法接受现在转换的图片。 请帮忙.. 我将离开人脸检测器代码。
public class FaceDetection{
//Load haar classifier XML file
public static final String XML_FILE =
"C:\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt2.xml";
public static void main(String[] args){
//Load image
IplImage img = cvLoadImage("C:\\Users\\The Blue Light\\Desktop\\13.jpg");
detect(img);
}
//Detect for face using classifier XML file
public static void detect(IplImage src){
//Define classifier
CvHaarClassifierCascade cascade = new CvHaarClassifierCascade(cvLoad(XML_FILE));
CvMemStorage storage = CvMemStorage.create();
//Detect objects
CvSeq sign = cvHaarDetectObjects(
src,
cascade,
storage,
1.5,
3,
CV_HAAR_DO_CANNY_PRUNING);
cvClearMemStorage(storage);
int total_Faces = sign.total();
//Draw rectangles around detected objects
for(int i = 0; i < total_Faces; i++){
CvRect r = new CvRect(cvGetSeqElem(sign, i));
cvRectangle (
src,
cvPoint(r.x(), r.y()),
cvPoint(r.width() + r.x(), r.height() + r.y()),
CvScalar.CYAN,
2,
CV_AA,
0);
}
//Display result
cvShowImage("Result", src);
cvWaitKey(0);
}
}
【问题讨论】:
-
肯定有很多事情可能会出错,但如果您已经尝试过致电
IplImage#getBufferedImage(),您应该描述什么那里出了问题。否则...试试看;-) -
是 IplImage#getBufferedImage() 将源 IplImage 转换为 BufferedImage 的 inbuild 方法吗?
-
不,它不工作。
-
天哪! (用戏剧性的语气:)那你就完蛋了!不认真,你应该更清楚地描述什么到目前为止你已经尝试过,以及以何种方式 它“不工作”。标题说“将 IplImage 转换为 BufferedImage”,文本说“将缓冲图像转换为 IplImage”,并且您没有提及任何尝试或错误消息。 (我不确定我是否可以帮助你,但你几乎没有为任何人提供足够的信息来帮助......)
-
这是加载 jpg 文件的类 n 创建 IplImage 对象的实例并检测人脸。 (此代码有效)现在我想将此代码与我的 GUI 集成,但问题是我的 gui 接受并在 BufferedImage 上工作。我需要知道这里调用方法
的方法,该方法将参数作为 IplImage,在我的 gui 上适用于 BufferedImage,因此需要先将我的 BufferedImage 转换为 IplImage,然后将图像传递给这个方法。我不知道如何转换它。
标签: java image image-processing face-detection