Перейти к содержимому
Compvision.ru

ssovec

Пользователи
  • Количество публикаций

    24
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем ssovec


  1. A тебе именно с помощью OpenCv надо? Посмотри AForge бибилотеку там можно скачать архив с примерами, в папке Video есть пример воспроизведения видео файлов.

    http://www.aforgenet.com/framework/downloads.html

    Вот вывод видео с помощью OpenCv

    http://robocraft.ru/blog/computervision/270.html

    там правда С++, но скачай OpenCvSharp вот отсюда http://code.google.com/p/opencvsharp/downloads/list

    там тоже есть пример вывода видео, правда не помню как именно называется


  2. Подниму старую тему но все же, пытаюсь реализовать код представленный в посте конкретно:

    cvReprojectImageTo3D(imageDepth, 3dImage, Q);
    
      cvSetImageCOI(3dImage, 3);
    
      cvCopy(3dImage, Zimg, 0);
    
    
      dist = cvGetReal2D(Zimg, 160, 120);

    opencv ругается что GetReal пожддерживает только однокональные массивы, а теперь вопрос если 3dImage трехканальное то как оно использованно в CvGetReal?

    и еще не сочтите за наглость откуда взяты данные для графиков представленных в посте?


  3. Добрый день с помощью функции vReprojectImageTo3D получил трехканальное изображение. Вопрос такой как бы его просмотреть, с помощью какой программы либо библиотеки? В matLabe как открыть к сожелению не знаю, буду благодарен за ссылку с решением подобной проблемы. Заранее спасибо.


  4. Здравствуйте, я тут уже наверное всех замучал вопросами :D , но задам еще один. Вызываю функцию StereoRectify() , она выдает ошибку All the matrices must have the same data type. Искал в интернете не у одного меня такая ошибка, но ни кто не чего дельного по ее исправлению не пишет, в чем может быть проблема? код ниже.

    public static void StereoCalibration1()
    
        {
    
            int ImageNum = 3;
    
            CvMat R = new CvMat(3, 3, MatrixType.F32C1);
    
            CvMat T = new CvMat(3, 1, MatrixType.F32C1);
    
            CvMat Q = new CvMat(4, 4, MatrixType.F32C1);
    
            CvMat R1 = new CvMat(3, 3, MatrixType.F32C1);
    
            CvMat R2 = new CvMat(3, 3, MatrixType.F32C1);
    
            CvMat P1 = new CvMat(3, 4, MatrixType.F32C1);
    
            CvMat P2 = new CvMat(3, 4, MatrixType.F32C1);
    
    
            IplImage[] srcImg = new IplImage[ImageNum];
    
    
            for (int i = 0; i < ImageNum; i++)
    
            {
    
                srcImg[i] = new IplImage(string.Format("Data/Calibration/Right/{0:D2}.jpg" , i) , LoadMode.Color);
    
            }
    
    
            CvSize imageSize = srcImg[0].Size;
    
            CvMat intrinsic_left, intrinsic_right, distortion_left, distortion_right, imagePoints_left, imagePoints_right, objectPoints, pointsCount;
    
            objectPoints = Cv.Load<CvMat>("objectPoints_left.xml");
    
            imagePoints_left = Cv.Load<CvMat>("imagePoints_left.xml");
    
            imagePoints_right = Cv.Load<CvMat>("imagePoints_right.xml");
    
            pointsCount = Cv.Load<CvMat>("pointsCount_left.xml");
    
            intrinsic_left = Cv.Load<CvMat>("intrinsic_left.xml");
    
            intrinsic_right = Cv.Load<CvMat>("intrinsic_right.xml");
    
            distortion_left = Cv.Load<CvMat>("distortion_left.xml");
    
            distortion_right = Cv.Load<CvMat>("distortion_right.xml");
    
    
            Cv.StereoCalibrate(objectPoints, imagePoints_left, imagePoints_right, pointsCount, intrinsic_left, distortion_left, intrinsic_right, distortion_right, imageSize, R, T);
    
            Cv.StereoRectify(intrinsic_left, intrinsic_right, distortion_left, distortion_right, imageSize, R, T, R1, R2, P1, P2, Q);
    
    
    
                using (CvFileStorage fs = new CvFileStorage("stereo_calibration.xml" , null , FileStorageMode.Write))
    
                {
    
                    fs.Write("stereo_rotation", R);
    
                    fs.Write("stereo_translation", T);
    
                    fs.Write("disparity_matrix", Q);
    
                    fs.Write("rectification1", R1);
    
                    fs.Write("rectification2", R2);
    
                    fs.Write("projection1", P1);
    
                    fs.Write("projection2", P2);
    
                };
    
    
                Cv.Save(R, "stereo_rotation.xml");
    
                Cv.Save(T, "stereo_translation.xml");
    
                Cv.Save(Q, "disparity_matrix.xml");
    
                Cv.Save(R1, "rectification1.xml");
    
                Cv.Save(R2, "rectification2.xml");
    
                Cv.Save(P1, "projection1.xml");
    
                Cv.Save(P2, "projection2.xml");
    
    
                foreach (IplImage img in srcImg)
    
                {
    
                    img.Dispose();
    
                }
    
                Console.WriteLine(File.ReadAllText("stereo_calibration.xml"));
    
    
    
        }


  5. Smorodov, спасибо во всем разобрался. выкладываю код на c# вдруг кто-нибудь будет тоже искать.

    код читает параметр intrinsic из того файла что я выкладывал

     CvMat intrinsic_left, distortion_left;
    
                using (CvFileStorage fs = new CvFileStorage(cameraLeft, null, FileStorageMode.Read))
    
                {
    
                    CvFileNode param = fs.GetFileNodeByName(null, "intrinsic");
    
                    intrinsic_left = fs.Read<CvMat>(param);
    
                }

    • Like 1

  6. спасибо в с++ все работает пока оставлю в с++. беда в том что пытаюсь переписать код в c#, в котором все пишу в основном, вылазиет ошибка Ошибка : Аргументы-типы для метода "OpenCvSharp.CvFileStorage.Read<T>(OpenCvSharp.CvFileNode)" не должны определяться по использованию. Попытайтесь явно определить аргументы-типы/ целый день бьюсь не могу не чего найти по этой ошибке. видимо придется оставить все в с++. спасибо за код.


  7. Т.е. я так понимаю, ты задачу стереосопоставления точек уже решил?

    Я в стереозрении новичек, но решил задачи калибровки камер, и стерео-калибровки, я так понимаю что задача сопоставления решена, хотя могу ошибаться так как в том алгоритме, что есть у меня еще проводится поиск эпиполярных линий, вот эту задачу не решал, но знаю что в openCV она решаема, а вот как от эпиполярных линий перейти к поиску координат?


  8. Здравствуйте, кто сталкивался с реализацией нахождения трехмерных координат точек с помощью пары камер?

    Решил такие задачи: калибровку двух камер сделал, стерео-калибровку сделал, читал что дальше можно вычислять координаты, а вот как я не нашел, если кто знает помогите пожалуйста.

×