Значения NaN из OpenCV dft () Переполнение стека

Hiho,

Я действительно не могу понять это.

Я использую OpenCV 2.4.2.

Функция dft () в следующем примере выдает
изображение, содержащее хотя бы одно значение NaN
для последнего вызова функции compute ().

При изменении чего-либо в коде,
даже если это не влияет на DFT,
тогда это вдруг работает.

Код является лишь минимальным примером проблемы
и часть огромного проекта. Некоторая часть кода дозы не составляет
любой смысл, как это, но это просто, чтобы показать вам проблему.

Теперь возникает вопрос: «Я делаю что-то не так?» Я ожидаю, что код будет работать так.
Я прикрепил изображения на случай, если кто-нибудь захочет попробовать себя.

#include <iostream>
#include "opencv2/core/core.hpp"#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"
const std::vector<float> compute(const cv::Mat& image)
{
cv::Mat workingImage;
cv::Mat imgDFT;
cv::Mat img;

cv::cvtColor(image, workingImage, CV_BGR2GRAY);
cv::resize(workingImage, img, cv::Size(256, 256));

std::vector<float> result = std::vector<float>(1, 0);
cv::copyMakeBorder(img, img, 32, 32, 32, 32, cv::BORDER_REFLECT);
img.convertTo(img, CV_32FC1);

cv::dft(img, imgDFT, cv::DFT_COMPLEX_OUTPUT);

if (!cv::checkRange(imgDFT))
std::cerr << "NaN in imgDFT" << std::endl;

return result;
}

int main(int argc, char* argv[])
{
std::vector<float> descriptor0 = compute(cv::imread("1.jpg", CV_LOAD_IMAGE_COLOR));
std::vector<float> descriptor1 = compute(cv::imread("1.jpg", CV_LOAD_IMAGE_COLOR));
std::vector<float> descriptor2 = compute(cv::imread("2.jpg", CV_LOAD_IMAGE_COLOR));
}

http://i.stack.imgur.com/OcK44.jpg (1.jpg)
http://i.stack.imgur.com/wBU8a.jpg (2.jpg)

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector