我现在有手检测代码,在检测到时会在手周围创建一个绿色矩形。但是,我想用另一个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);
答案 0 :(得分:1)
您可以按以下步骤执行此操作:
从源图像
中显示矩形Mat submat = src.submat(new Rect(200,200,100,100));
现在将sencond图像复制到submat
中src2.copyTo(子阵列);
注意:在复制之前,确保第二个图像的大小与矩形相同,否则您可以使用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