我看過很多關於這個問題的帖子,但這一個是不同的。我的代碼適用於一對圖像,但不適用於另一對圖像。StereoBM沒有給出正確的輸出
後來,我想將兩臺攝像機的視頻輸入轉換爲立體聲輸出。我已經嘗試過,但也有與下面顯示的圖像(第二對圖像)相同的問題。
的下面圖像給出預期輸出
的下面的圖像給出不正確的輸出
如何糾正我的代碼,使其適用於所有圖像?
這裏是我的代碼
public static void main(String[] args)
{
Mat left = Imgcodecs.imread("path", Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);
Mat right = Imgcodecs.imread("path", Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);
Core.normalize(left, left, 0, 255, NORM_MINMAX, CvType.CV_8U);
Core.normalize(right, right, 0, 255, NORM_MINMAX, CvType.CV_8U);
StereoBM bm = StereoBM.create(16, 15);
Mat disparity = new Mat();
bm.compute(left, right, disparity);
ImageProcessor.showResult(disparity);
mainFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void showResult(Mat img)
{
Imgproc.resize(img, img, new Size(640, 480));
MatOfByte matOfByte = new MatOfByte();
Imgcodecs.imencode(".jpg", img, matOfByte);
byte[] byteArray = matOfByte.toArray();
BufferedImage buffImage = null;
try
{
InputStream in = new ByteArrayInputStream(byteArray);
buffImage = ImageIO.read(in);
JFrame frame = new JFrame();
frame.getContentPane().add(new JLabel(new ImageIcon(buffImage)));
frame.pack();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);
} catch (IOException e)
{
e.printStackTrace();
}
}
要說清楚,請說明您的代碼是「正在工作」還是「未正常工作」。還請指出一個問題。 – jwils
@jwils「工作」是指「預期產出」。 「不工作」的意思是「不正確的輸出」 –