首页 > 解决方案 > 如何为切片的 3D numpy 数组的所有元素添加值?

问题描述

我的代码:

img = np.asarray(ibuffer).copy()
imgb = cv2.cvtColor(img, cv2.COLOR_BGR2Lab)
imgb[:,:,0] += bvalue
imgb = cv2.cvtColor(imgb,cv2.COLOR_LAB2BGR)
photo = Image.fromarray(imgb)
photo = resize(photo)
photo = ImageTk.PhotoImage(photo)
canvas.photo = photo
canvas.create_image(0,0,anchor="nw",image = photo)

我需要将“bvalue”变量的值添加到 imgb(3D numpy 数组)的第一维的所有元素中。当我尝试这个时,我收到以下错误消息:

Tkinter 回调 Traceback 中的异常(最近一次调用最后一次):文件“C:\Users\asaru\AppData\Local\Programs\Python\Python39\lib\tkinter_init _.py ”,第 1884 行,调用 返回 self.func( *args) 文件“e:\My Files\Project\Image Editor\Image Editor\test.py”,第 134 行,亮

imgb[:,:,0] += bvalue

numpy.core._exceptions._UFuncOutputCastingError:无法使用转换规则'same_kind'将ufunc'add'输出从dtype('<U3')转换为dtype('uint8')

标签: pythonnumpyimage-processingtkinter

解决方案


检查Numpy Dtypes。您的变量bvalue是 Unicode String 类型,变量imgb是 unsigned int 类型。无法添加它们。


推荐阅读