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



我现在有手部检测代码,检测到时会在手周围创建一个绿色矩形。但是,我想用另一个 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);

您可以通过以下步骤进行操作:

  1. 对源图像中的矩形进行子垫处理

    mat submat = src.submat(new Rect(200, 200, 100, 100((;

  2. 现在将 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

最新更新