Операторы Numpy Arrays возвращают все белое изображение - PullRequest
0 голосов
/ 21 октября 2019

Я выполняю небольшой равномерный алгоритм квантования на сером изображении. Когда я делаю цикл сам, генерируемое изображение соответствует ожидаемому (n_levels отличается серыми тонами). Этот код очень медленный, как и ожидалось.

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

Помогите ли вы в этом?

import cv2
import numpy as np

frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
for y in range(0, h):
    for x in range(0, w):
        frame_gray[y, x] = round(frame_gray[y, x] * n_levels / 255) * 255 / n_levels

# DIFFERENT RESULT THAN
np.rint(frame_gray * n_levels / 255) * 255 / n_levels

1 Ответ

0 голосов
/ 21 октября 2019

Мне удалось заставить операторы numpy работать как мои циклы for, например:

(np.rint((frame_gray / 255) *  n_levels)  * (255 / n_levels)).astype(np.ubyte) 

Теперь я получаю тот же результат, и, конечно, это намного быстрее, потому что numpy знает, что делает...

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