[openCV] mapa głębokości z 2 obrazów - stereowizja
Ostatnio zmodyfikowano 2017-10-22 16:17
aaadam Temat założony przez niniejszego użytkownika |
[openCV] mapa głębokości z 2 obrazów - stereowizja » 2017-10-22 16:17:48 witam, próbuję zrobić mapę głębokości z 2 plików( kod wzięty z przyklaów które się znajdują na openCv.org) , używam kamerkę minoru3d, ustawiałem ją w różnych pozycjach ale nie działa ta mapa głębokości, ktoś coś może doradzić??
#include <iostream> #include "opencv2/calib3d.hpp" #include "opencv2/imgcodecs.hpp" #include "opencv2/highgui.hpp" #include <Windows.h> using namespace cv;
const char * windowDisparity = "Disparity";
void readme();
int main() { readme(); VideoCapture cap( 1 ); Mat frame; cap >> frame; imwrite( "../x64/Debug/image.png", frame ); cap.release(); Sleep( 100 ); VideoCapture cap2( 2 ); Mat frame2; cap2 >> frame2; imwrite( "../x64/Debug/image2.png", frame2 ); cap.release(); Mat imgLeft = imread( "../x64/Debug/image.png", IMREAD_GRAYSCALE ); Mat imgRight = imread( "../x64/Debug/image2.png", IMREAD_GRAYSCALE ); Mat imgDisparity16S = Mat( imgLeft.rows, imgLeft.cols, CV_16S ); Mat imgDisparity8U = Mat( imgLeft.rows, imgLeft.cols, CV_8UC1 ); if( imgLeft.empty() || imgRight.empty() ) { std::cout << " --(!) Error reading images " << std::endl; return - 1; } int ndisparities = 16 * 5; int SADWindowSize = 21; Ptr < StereoBM > sbm = StereoBM::create( ndisparities, SADWindowSize ); sbm->compute( imgLeft, imgRight, imgDisparity16S ); double minVal; double maxVal; minMaxLoc( imgDisparity16S, & minVal, & maxVal ); printf( "Min disp: %f Max value: %f \n", minVal, maxVal ); imgDisparity16S.convertTo( imgDisparity8U, CV_8UC1, 255 /( maxVal - minVal ) ); namedWindow( windowDisparity, WINDOW_NORMAL ); imshow( windowDisparity, imgDisparity8U ); waitKey( 0 ); return 0; }
void readme() { std::cout << " Usage: ./SBMSample <imgLeft> <imgRight>" << std::endl; }
|
|
« 1 » |