OpenCV Java.多个图像并排 [英] OpenCV java. Multiple images side by side

查看:55
本文介绍了OpenCV Java.多个图像并排的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有关于如何并排组合两个或多个图像的示例?在JAVA中

Is there any example of how to combine two or more images side by side? In JAVA

我尝试改编 C++ 代码,但没有成功.

I tried to adapt c++ code but without success.

Mat m = new Mat(imageA.cols(), imageA.rows() + imageB.rows(), imageA.type());

m.adjustROI(0, 0, imageA.cols(), imageA.rows());
imageA.copyTo(m);

m.adjustROI(0, imageA.rows(), imageB.cols(), imageB.rows());
imageB.copyTo(m);

这将始终将 m 作为 imageA.方法 A.copyTo(B) 总是像 B == A

This will always give m as imageA. Method A.copyTo(B) always result like B == A

C++ 中几乎每个例子都包含 cvCopy(arg1, arg2); 看起来 java 模拟是 A.copyTo(B)

Almost every example in c++ contains cvCopy(arg1, arg2); it looks like java analog is A.copyTo(B)

但是当我使用 A.copyTo(B) 时,即使 B 更大,我也总是得到 A 的宽度、高度和内容的图像.

But when I use A.copyTo(B), I always get image with width, height and content of A even if B was bigger.

推荐答案

private Mat addTo(Mat matA, Mat matB) {
    Mat m = new Mat(matA.rows(), matA.cols() +  matB.cols(), matA.type());
    int aCols = matA.cols();
    int aRows = matA.rows();
    m.rowRange(0, aRows-1).colRange(0, aCols-1) = matA;
    m.rowRange(0, aRows-1).colRange(aCols, (aCols*2)-1) = matB;
    return m;
}

我没有尝试运行它,但我相信它会起作用.我假设 matA 和 matB 将具有相同的大小相同的类型.即使它不起作用,也一定有一些小的语法错误等.您不应该使用 4 个 for 循环来放置像素值!

I didn't try to run it, but I believe it will work. I assume matA and matB will have same size and same type. Even if it doesn't work, there must be some little syntax errors or etc. You shouldn't be putting pixels values by using 4 for loops!

这篇关于OpenCV Java.多个图像并排的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆