在mat框架opencv java上加载jpg图像

时间:2017-08-17 00:18:16

标签: java opencv

我现在有手检测代码,在检测到时会在手周围创建一个绿色矩形。但是,我想用另一个jpeg图像填充矩形。我正在考虑使用ImagePattern,其中图像嵌入到形状中,但这似乎在我的程序中不起作用。

这是我在手边创建矩形的代码:

Imgproc.rectangle(frame, handsArray[i].tl(), handsArray[i].br(), new Scalar(0, 255, 0), 3);

框架是Mat,Imgproc是opencv,javacv函数。

有人可以帮我解决这个问题吗?我在苦苦挣扎

此致

Green Rectangle Around The Hand that needs to be filled

    BufferedImage bi = null;
    try {
        bi = ImageIO.read(new File(trollFace));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    Mat mat = new Mat(bi.getHeight(), bi.getWidth(), CvType.CV_8UC3);
    byte[] data = ((DataBufferByte) bi.getRaster().getDataBuffer()).getData();
    mat.put(0, 0, data);

1 个答案:

答案 0 :(得分:1)

您可以按以下步骤执行此操作:

  1. 从源图像

    中显示矩形

    Mat submat = src.submat(new Rect(200,200,100,100));

  2. 现在将sencond图像复制到submat

    src2.copyTo(子阵列);

  3. 注意:在复制之前,确保第二个图像的大小与矩形相同,否则您可以使用resize()类的Imgprc函数来调整垫子的大小。就是这样。

    更新:以下是示例。

    Mat src = Imgcodecs.imread("C:\\src1.jpg");
    Mat src2 = Imgcodecs.imread("C:\\src2.jpg");
    Imgproc.resize(src2, src2, new Size(100, 100));
    Mat submat = src.submat(new Rect(200, 200, 100, 100));
    src2.copyTo(submat);
    
    // now you can do what you want with the src1