我现在有手部检测代码,检测到时会在手周围创建一个绿色矩形。但是,我想用另一个 jpeg 图像填充矩形。我正在考虑使用ImagePattern,其中图像嵌入到形状中,但这似乎在我的程序中不起作用。
这是我在手周围创建矩形的代码:
Imgproc.rectangle(frame, handsArray[i].tl(), handsArray[i].br(), new Scalar(0, 255, 0), 3);
框架是一个垫子,Imgproc是一个opencv,javacv函数。
有人可以帮我解决这个问题吗?我在挣扎
问候
需要填充的手周围的绿色矩形
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);
您可以通过以下步骤进行操作:
-
对源图像中的矩形进行子垫处理
mat submat = src.submat(new Rect(200, 200, 100, 100((;
-
现在将 sencond 图像复制到子垫中
src2.copyTo(submat(;
注意:在复制之前,请确保第二个图像的大小与矩形相同,否则可以使用Imgprc
类的resize()
函数来调整 Mat 的大小。就是这样。
更新:下面是示例。
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