Tôi muốn tải một hình ảnh màu, chuyển đổi nó thành màu xám và sau đó đảo ngược dữ liệu trong tệp.hình ảnh đảo ngược bằng Python với OpenCV
Những gì tôi cần: để lặp qua mảng trong OpenCV và thay đổi mỗi giá trị độc thân với công thức này (nó thể là sai nhưng có vẻ như hợp lý đối với tôi):
img[x,y] = abs(img[x,y] - 255)
nhưng tôi không hiểu tại sao nó không hoạt động:
def inverte(imagem, name):
imagem = abs(imagem - 255)
cv2.imwrite(name, imagem)
def inverte2(imagem, name):
for x in np.nditer(imagem, op_flags=['readwrite']):
x = abs(x - 255)
cv2.imwrite(name, imagem)
if __name__ == '__main__':
nome = str(sys.argv[1])
image = cv2.imread(nome)
gs_imagem = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
inverte(gs_imagem, "invertida.png")
inverte2(gs_imagem, "invertida2.png")
Tôi không muốn làm một vòng lặp rõ ràng (Tôi đang cố gắng để được thêm pythonic). Tôi có thể thấy rằng trong một hình ảnh có nền trắng chuyển sang màu đen, nhưng chỉ có nó không giống các màu khác đang thay đổi nhiều (nếu có).
Cảm ơn bạn! Tôi không biết rằng trong python tiêu chuẩn sẽ được unsigned int ... – Mansueli
Gọn gàng, không nghĩ rằng nó sẽ đơn giản này, cảm ơn. – Nit
Không phát minh lại bánh xe trừ khi bạn thực sự phải; để đảo ngược dữ liệu, sử dụng [Not] (http://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html#bitwise-not) (aka 'bitwise_not') để thay thế. – vaxquis