【问题标题】:Converting IplImage to BufferedImage to integrate将 IplImage 转换为 BufferedImage 进行集成
【发布时间】: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


【解决方案1】:

IplImage 图像 = IplImage.createFrom(yourBufferedImage);

谢谢@Marco13 正是我需要的..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    相关资源
    最近更新 更多