Opencv: от плавающей точки до - PullRequest
0 голосов
/ 28 июня 2011

У меня есть следующий тип данных в текстовом файле (номер строки = 4000, номер столбца = 141). Первый 5 * 5 элемент этих данных здесь, чтобы дать вам представление:

1.05E-01    1.05E-01    1.04E-01    1.04E-01    1.04E-01
1.03E-01    1.04E-01    1.04E-01    1.03E-01    1.04E-01
1.04E-01    1.04E-01    1.04E-01    1.04E-01    1.03E-01
1.04E-01    1.04E-01    1.05E-01    1.04E-01    1.04E-01
1.03E-01    1.03E-01    1.04E-01    1.05E-01    1.03E-01

Я хочу сделать изображение в градациях серого с этими данными.

  1. Как я могу масштабировать данные перед их подачей в openCV?

  2. Как я могу генерировать выходные данные с размером 512 X 512?

  3. Что не так со следующим кодом?

    IplImage *img = (cvSize(4000, 141), IPL_DEPTH_32F, 1);
    
    freopen ("D:\\input.txt", "r", stdin);
    int i;
    float data;
    for (i = 0; i < img->width * img->height ; i++) 
    {
        scanf("%e",&data);
                data*=2500;//for scaling data roughly
        ((float*)img->imageData)[i] =data; 
    }
    
    cvNamedWindow ("image", 1);
    
    cvShowImage ("image", img);
    
    cvWaitKey (0);
    
    cvReleaseImage (&img);
    
    cvDestroyWindow("image");
    

1 Ответ

0 голосов
/ 28 июня 2011

Эта строка сама по себе генерирует ошибку компиляции:

IplImage *img = (cvSize(4000, 141), IPL_DEPTH_32F, 1); 

Я почти уверен, что вы хотели поместить туда cvCreateImage(), но если вам нужна серьезная помощь, лучше напишите хороший код (иХороший код, как правило, не содержит ошибок или очень близок к этому.)

  1. Почему бы не подать эти данные в OpenCV, а затем использовать OpenCV для масштабирования изображения?

  2. Вы можете использовать cvResize (), чтобы изменить размер вашего изображения.

  3. Я так понимаю, это изображение в градациях серого, потому что вы создаете его только с одним каналом,Ваши значения должны находиться в диапазоне от 0,0 до 1,0 для изображений IPL_DEPTH_32F, поэтому убедитесь в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...