3

В PIL высокое качество размер от того, что я видел, кажется:openCV эквивалент PIL resize ANTIALIAS?

img = img.resize((n1, n2), Image.ANTIALIAS) 

Для OpenCV это, кажется, способ сделать это:

small = cv2.resize(image, (0,0), fx=0.5, fy=0.5) 

Так что мой вопрос, есть необходим дополнительный параметр или это уменьшит размер с наименьшим качеством потери?

ответ

3

От documentation:

Чтобы сжать изображение, она будет выглядеть лучше с CV_INTER_AREA интерполяции, а для увеличения изображения, она будет выглядеть лучше с CV_INTER_CUBIC (медленно) или CV_INTER_LINEAR (быстрее, но все-таки выглядит нормально).

По умолчанию для изменения размера является CV_INTER_LINEAR. Изменение интерполяции для CV_INTER_AREA, так как вы хотите, чтобы уменьшить изображение:

small = cv2.resize(image, (0,0), fx=0.5, fy=0.5, interpolation = cv2.INTER_AREA) 

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

+0

Я собираюсь сделать как сжатие, так и расширение изображения. Он должен быть точного размера, и если это не так, мне нужно будет изменить его размер или уменьшить. Итак, что я получаю, так это то, что CV_INTER_LINEAR быстрее и стандартно подходит для сокращения, но CV_INTER_AREA следует использовать для повышения размера? Мне нужно максимальное качество. Знаете ли вы, насколько медленнее INTER_AREA? – alfredox

+0

@alfredox INTER_AREA - лучший способ сделать изображение меньшим, говоря о качестве. INTER_CUBIC для увеличения изображения. INTER_LINEAR, кажется, самый быстрый. Я бы предположил, что вы можете выполнить некоторые тесты производительности, чтобы сравнить каждую интерполяцию - я сам этого не делал. Повторная калибровка может быть дорогой (по производительности). – chembrad

+0

ОК, я посмотрю на это, спасибо – alfredox

Смежные вопросы