我的图像是类型CV_8UC3(它是灰度图像),我需要它CV_8UC1.我怎样才能进行转型?我已经试过了
Mat right = new Mat(rectRight.width(), rectRight.height(), CvType.CV_8UC1);
rectRight.convertTo(right, CvType.CV_8UC1,255,0);
Run Code Online (Sandbox Code Playgroud)
但它仍然给我一个3通道图像.
RectLeft是此图像的修正版本:
Imgproc.undistort(Highgui.imread(images[0], Imgproc.COLOR_BGR2GRAY), undist_left, cameraMatrix, distCoeff);
Run Code Online (Sandbox Code Playgroud)
使用这部分代码完成整改:
Mat rectLeft = new Mat();
Imgproc.initUndistortRectifyMap(cameraMatrix, distCoeff, R1, newCameraMatrix_left, left.size(), CvType. CV_32FC1, map1_left, map2_left);
Imgproc.remap(left, rectLeft, map1_left, map2_left, Imgproc.INTER_LANCZOS4);
Run Code Online (Sandbox Code Playgroud)
应使用经过校正的图像(及其右侧相机的伙伴)
StereoBM stereoAlgo = new StereoBM();
stereoAlgo.compute(left, right, disparity);
Run Code Online (Sandbox Code Playgroud)
但是有一个例外,它说两个输入图像都应该是类型,CV_8UC1但我已经检查并rectLeft.type()给了我一个16.(我猜这是CV_8UC1).
你可能想要StereoBM的灰度转换:
Imgproc.cvtConvert(src,dst,Imgproc.COLOR_BGR2GRAY);
Run Code Online (Sandbox Code Playgroud)
(你不能用Mat.convertTo()改变/减少通道数,只有深度)
| 归档时间: |
|
| 查看次数: |
10994 次 |
| 最近记录: |