是否有任何如何将两个或多个图像并排组合的示例?在JAVA中
我试着改编c++代码,但没有成功。
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
结果一致
c++中几乎每个例子都包含cvCopy(arg1, arg2);
,看起来像java中的A.copyTo(B)
但是当我使用A. copyto (B)时,我总是得到A的宽度,高度和内容的图像,即使B更大
你可以使用hconcat/vconcat函数:
Mat dst = new Mat();
List<Mat> src = Arrays.asList(mat1, mat2);
Core.hconcat(src, dst);
//Core.vconcat(src, dst);
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循环来放置像素值!