Драгоценный камень Ruby LoadError - rubygems/defaults/operating_system

Мое решение:

  1. Получить канал R (из RGB) - все операции, которые мы выполняем на этом канале:

  2. Создать регион из Процент (ROI)

    • Пороговый канал R с минимальным значением 149 (верхнее правое изображение)

    • Область расширенного результата (левое среднее изображение)

  3. Обнаружение возрастов в вычисленных роях. Дерево имеет много краев (правое среднее изображение)

    • Результат расширения

    • Эрозия с большим радиусом (нижнее левое изображение)

  4. Выберите самый большой (по площади) объект - это область результата

  5. ConvexHull (дерево является выпуклым многоугольником) (нижнее правое изображение )

  6. Ограничивающий прямоугольник (справа внизу - прямоугольник)

Шаг за шагом: enter image description here

Первый результат - самый простой, но не в программном обеспечении с открытым исходным кодом - «Adaptive Vision Studio + Adaptive Vision Library»: это не открытый исходный код, а действительно быстрое создание прототипа:

Весь алгоритм обнаружения рождественской елки (11 блоков ): AVL solution

Следующий шаг. Мы хотим, чтобы решение с открытым исходным кодом. Измените фильтры AVL на фильтры OpenCV: здесь я сделал небольшие изменения, например. Edge Detection использует фильтр cvCanny, чтобы уважать то, что я действительно умножил изображение области с изображением ребер, чтобы выбрать самый большой элемент, который я использовал findContours + contourArea, но идея та же.

https://www.youtube.com/watch?v=sfjB3MigLH0&index=1&list=UUpSRrkMHNHiLDXgylwhWNQQ

OpenCV solution

Сейчас я не могу показать изображения с промежуточными шагами, потому что могу разместить только 2 ссылки.

Хорошо, теперь мы используем фильтры openSource, но это еще не весь открытый исходный код. Последний шаг - портирование на c ++ код. Я использовал OpenCV в версии 2.4.4

Результат финального кода на c ++: enter image description here

код на c ++ также довольно короткий:

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/opencv.hpp"
#include 
using namespace cv;

int main()
{

    string images[6] = {"..\\1.png","..\\2.png","..\\3.png","..\\4.png","..\\5.png","..\\6.png"};

    for(int i = 0; i < 6; ++i)
    {
        Mat img, thresholded, tdilated, tmp, tmp1;
        vector channels(3);

        img = imread(images[i]);
        split(img, channels);
        threshold( channels[2], thresholded, 149, 255, THRESH_BINARY);                      //prepare ROI - threshold
        dilate( thresholded, tdilated,  getStructuringElement( MORPH_RECT, Size(22,22) ) ); //prepare ROI - dilate
        Canny( channels[2], tmp, 75, 125, 3, true );    //Canny edge detection
        multiply( tmp, tdilated, tmp1 );    // set ROI

        dilate( tmp1, tmp, getStructuringElement( MORPH_RECT, Size(20,16) ) ); // dilate
        erode( tmp, tmp1, getStructuringElement( MORPH_RECT, Size(36,36) ) ); // erode

        vector > contours, contours1(1);
        vector convex;
        vector hierarchy;
        findContours( tmp1, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0) );

        //get element of maximum area
        //int bestID = std::max_element( contours.begin(), contours.end(), 
        //  []( const vector& A, const vector& B ) { return contourArea(A) < contourArea(B); } ) - contours.begin();

            int bestID = 0;
        int bestArea = contourArea( contours[0] );
        for( int i = 1; i < contours.size(); ++i )
        {
            int area = contourArea( contours[i] );
            if( area > bestArea )
            {
                bestArea  = area;
                bestID = i;
            }
        }

        convexHull( contours[bestID], contours1[0] ); 
        drawContours( img, contours1, 0, Scalar( 100, 100, 255 ), img.rows / 100, 8, hierarchy, 0, Point() );

        imshow("image", img );
        waitKey(0);
    }


    return 0;
}

7
задан Fluffy 19 January 2012 в 17:43
поделиться

4 ответа

Вы использовали -d ? Если да, то это электронное письмо предполагает, что в нем отображаются исключения, даже когда они спасены.

10
ответ дан 7 December 2019 в 01:25
поделиться

Похоже, вам тоже нужен гем mysql.

0
ответ дан 7 December 2019 в 01:25
поделиться

Следующая ошибка

Exception 'LoadError' at D:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:1112 - no such file to load -- rubygems/defaults/operating_system

Может относиться к

  1. поврежденной установке (проверьте файл rubygems.rb и убедитесь, что для него требуется 'rubygems / defaults / operating_system Если это так, проверьте, существует ли оно) или
  2. вы пытаетесь запустить приложение 2.3.x, в то время как сервер все еще настроен на использование Rails 2.1.x

Я надеюсь, что это поможет. Если нет, дайте мне знать.

0
ответ дан 7 December 2019 в 01:25
поделиться

Вы пробовали InstantRails? У него есть rails / apache / mysql в красивом пакете, и он работал из коробки на каждом компьютере XP, который я пробовал.

Я также устанавливаю NetBeans как среду разработки и просто указываю его на двоичный файл InstantRails «bin / ruby».

0
ответ дан 7 December 2019 в 01:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: