Я не уверен, что я сделал не так с этим кодом:Numpy: Установка элемента массива с последовательностью
import cv2
from matplotlib import image as img
import numpy as np
from matplotlib import pyplot as plt
from matplotlib.pyplot import axis
img = cv2.imread('popi.png', 0)
cv2.imshow('lel', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
a = np.shape(img)
iloscpixeli = a[0] * a[1]
print(iloscpixeli)
b = np.zeros((256, 1))
H = np.zeros((a[0], a[1]))
# czest = np.zeros((256, 1))
# probf = np.zeros((256, 1))
# probc = np.zeros((256, 1))
# cum = np.zeros((256, 1))
dim = np.shape(img)
wyjscie = np.zeros(dim)
H = np.zeros(dim)
print("dim", dim)
czest = np.zeros(dim)
probc = np.zeros(dim)
# print("r",czest)
probf = np.zeros(dim)
cum = np.zeros(dim)
for i in range(1, a[0]):
for j in range(1, a[1]):
wartosc = img[i, j]
czest[wartosc + 1] = (czest[wartosc + 1] + 1)
probf[wartosc + 1] = czest[wartosc + 1]/iloscpixeli
suma = 0
nobins = 255
d = np.zeros((256, 1))
d1 = np.shape(d)
d11 = d1[0]
for i in range(1, d11):
suma = suma + czest[i]
cum[i] = suma
probc[i] = cum[i]/iloscpixeli
wyjscie[i] = np.around(probc[i] * nobins)
wyjscie=wyjscie.tolist()
for i in range(1, a[0]):
for j in range(1, a[1]):
H[i, j] = wyjscie[img[i,j] + 1]
cv2.imshow('wyrownany', H)
и эта линия (да последний: C):
H[i, j] = wyjscie[img[i,j] + 1]
дает me error ValueError: установка элемента массива с последовательностью. Попытка отремонтировать проверено об изменении «wyjscie» из массива в список .. но не работает хорошо. Я ищу любую помощь. Это здорово, когда вы смотрите на код, я, возможно, сделать что-то глупое и ... но есть линия czest[wartosc + 1] = (czest[wartosc + 1] + 1)
и она хорошо работает ...
Какая форма или len() из 'wyjscie [img [i, j] + 1]'? Поскольку 'H' является 2d,' H [i, j] 'требует скалярного или единственного списка элементов или массива. – hpaulj