私はこの問題に関して多くの記事を見てきましたが、これは異なっています。私のコードはイメージの1つのペアで動作していますが、イメージの別のペアでは動作しません。StereoBMが適切な出力を出さない
後で、2台のカメラからのビデオ入力をステレオ出力に変換したいと考えています。私はそれを試みたが、それはまた、以下に示す画像(第2の画像のペア)と同じ問題を有する。
下の画像
は出力![enter image description here](https://i.stack.imgur.com/QrY69.png)
下の画像
すべての画像で機能するようにコードを修正するにはどうすればよいですか?
はここで、正規化後のグレースケールで両方の画像上の
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 "working"は "期待される出力"を意味します。 「働かない」とは「間違った出力」を意味する –