From edf820c5804b72b4f018b4a5f8d24a4a9e86167d Mon Sep 17 00:00:00 2001 From: Joao Carreira Date: Sat, 17 May 2014 19:06:21 +0100 Subject: [PATCH] Initial code to measure disparity using OpenCV --- source/lib/PlaYUVerFrame.cpp | 8 ++++---- source/modules/DisparityCVVar.cpp | 9 ++++----- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/source/lib/PlaYUVerFrame.cpp b/source/lib/PlaYUVerFrame.cpp index 32f5c72..fb7e2eb 100755 --- a/source/lib/PlaYUVerFrame.cpp +++ b/source/lib/PlaYUVerFrame.cpp @@ -516,11 +516,11 @@ cv::Mat PlaYUVerFrame::getCvMat() if( m_iPixelFormat != GRAY ) { FrametoRGB8(); - memcpy( opencvFrame.data, m_pcRGBPelInterlaced, getBytesPerFrame() * sizeof(Pel) ); + memcpy( opencvFrame.data, m_pcRGBPelInterlaced, m_uiWidth * m_uiHeight * 3 * sizeof(Pel) ); } else { - memcpy( opencvFrame.data, &( m_pppcInputPel[LUMA][0][0] ), getBytesPerFrame() * sizeof(Pel) ); + memcpy( opencvFrame.data, &( m_pppcInputPel[LUMA][0][0] ), m_uiWidth * m_uiHeight * sizeof(Pel) ); } return opencvFrame; } @@ -555,7 +555,7 @@ Void PlaYUVerFrame::copyFrom( cv::Mat* opencvFrame ) Pel* pInputPelU = m_pppcInputPel[CHROMA_U][0]; Pel* pInputPelV = m_pppcInputPel[CHROMA_V][0]; Pel* pcRGBPelInterlaced = m_pcRGBPelInterlaced; - memcpy( pcRGBPelInterlaced, opencvFrame->data, getBytesPerFrame() * sizeof(Pel) ); + memcpy( pcRGBPelInterlaced, opencvFrame->data, m_uiWidth * m_uiHeight * 3 * sizeof(Pel) ); for( UInt i = 0; i < m_uiHeight * m_uiWidth; i++ ) { *pInputPelY++ = *pcRGBPelInterlaced++; @@ -566,7 +566,7 @@ Void PlaYUVerFrame::copyFrom( cv::Mat* opencvFrame ) } else { - memcpy( m_pppcInputPel[LUMA][0], opencvFrame->data, getBytesPerFrame() * sizeof(Pel) ); + memcpy( m_pppcInputPel[LUMA][0], opencvFrame->data, m_uiWidth * m_uiHeight * sizeof(Pel) ); } } #endif diff --git a/source/modules/DisparityCVVar.cpp b/source/modules/DisparityCVVar.cpp index 1d1c105..cb062e6 100644 --- a/source/modules/DisparityCVVar.cpp +++ b/source/modules/DisparityCVVar.cpp @@ -65,13 +65,12 @@ Void DisparityCVVar::create( PlaYUVerFrame* InputFrame ) PlaYUVerFrame* DisparityCVVar::process( PlaYUVerFrame* InputLeft, PlaYUVerFrame* InputRight ) { -// cv::Mat leftImage = InputLeft->getCvMat(); -// cv::Mat rightImage = InputRight->getCvMat(); + cv::Mat leftImage = InputLeft->getCvMat(); + cv::Mat rightImage = InputRight->getCvMat(); cv::Mat disparityImage, disparityImage8; -// m_cStereoVar(leftImage,rightImage,disparityImage); -// disparityImage.convertTo(disparityImage8,CV_8U); - disparityImage8 = InputLeft->getCvMat(); + m_cStereoVar(leftImage,rightImage,disparityImage); + disparityImage.convertTo(disparityImage8,CV_8U); m_pcDisparityFrame->copyFrom(&disparityImage8); return m_pcDisparityFrame;