image = cv2.imread('black.jpg')[:,:,0] # let's just take the red channel alone for brevity
print(image[75:85,155:165]) # print middle 10x10
# output: [[0,0,0,....],...]
Я хочу вычесть 1 из всей интенсивности пикселей.И да, я определенно не хочу, чтобы 0 стали 255.Я просто хочу, чтобы они остались равными 0.
print(image[75:85,155:165]-1)
# output: [[255,255,255,....],...]
print(np.array(image[75:85,155:165])-1)
# output: [[255,255,255,....],...]
print(np.array(image[75:85,155:165], dtype='float32')-1)
# output: [[-1.,-1.,-1.,....],...]
Я могу преобразовать последний обратно в uint8
после .clip(0,255)
, но это не похоже на правильный способ сделать это.Есть ли способ сделать это напрямую (без приведения и если условия, которые могут быть неэффективны для параллельной обработки)?