В настоящее время я изменяю размер изображения PIL в Python, используя
resized_image = pil_image.resize((128, 128), resample=Image.BILINEAR)
Я хочу изменить размер того же изображения, используя C ++ и сделать вывод идентичным версии Python. Я попытался с помощью функции изменения размера opencvs, как это
cv::GpuMat::src;
cv::GpuMat::dst;
cv::cuda::resize(src, dst, cv::Size(128, 128), NULL, NULL, cv::INTER_LINEAR);
Но если я записываю оба изображения в файл и проверяю их, я вижу, что Python-версия измененных размеров изображений заметно более размыта.
Я ищу способы достоверно воспроизвести измененный образ питона в C ++, но я не уверен, что лучший способ это сделать. Прежде всего, я не очень понимаю, почему в выходных данных есть расхождение, они используют одну и ту же билинейную понижающую дискретизацию.
Я пытался проверить код в https://github.com/python-pillow/Pillow/blob/master/PIL/Image.py, чтобы увидеть, если он вызывает c-lib. Но, честно говоря, я даже не понимаю, как работает этот метод изменения размера. Похоже, он просто вызывает себя в конце, не выполняя работы по изменению размера.
Задача ещё не решена.
Других решений пока нет …