Возникла проблема со скоростью: фото fhd обрабатывается около 0,45 секунд. Для моих задач это непозволительно. Необходимо достичь скорости хотя бы единиц миллисекунд.
import numpy as np import cv2 image = cv2.imread('1.jpg') row,col,ch= image.shape mean = 0 var = 0.1 sigma = var**0.5 gauss = np.random.normal(mean,sigma,(row,col,ch)) gauss = gauss.reshape(row,col,ch) noisy = image + gauss cv2.imwrite('2.jpg', noisy)
Уже оптимизировал самую медленную часть кода(генерацию массива рандомных чисел)(данная операция занимает окооло 0,32с):
gauss = np.random.normal(mean,sigma,(row,col,ch)) gauss = gauss.reshape(row,col,ch
Уменьшил матрицу в сто раз, а потом размножил в сто раз:
roww=int(row/100) b = timeit.default_timer() gauss = np.random.normal(mean,sigma,(roww,col,ch)) gauss = gauss.reshape(roww*col*ch) gauss = np.tile(gauss, 100) gauss = gauss.reshape(row,col,ch)
gauss = np.tile(gauss, 100)
А теперь к основной проблеме: весь этот код по-прежнему выполняется очень долго(170мс),самые времязатратные операции:
Сложение матриц занимает 30мс.
noisy=image+gauss
Открытие(35мс) и сохранение(90мс) фото:
image = cv2.imread("1.jpg"
cv2.imwrite('2.jpg', noisy)
Можно ли эти операции как-либо ускорить на python?
Спасибо!
Полный код:
import numpy as np import cv2 image = cv2.imread('1.jpg') row,col,ch= image.shape mean = 0 var = 0.1 sigma = 10 roww=int(row/100) gauss = np.random.normal(mean,sigma,(roww,col,ch)) gauss = gauss.reshape(roww*col*ch) gauss = np.tile(gauss, 100) gauss = gauss.reshape(row,col,ch) noisy=image+gauss cv2.imwrite('2.jpg', noisy)