如何使用python将数组最后一列(size=(8,8,3))的前8个元素替换为大小为(8,8)的2d数组

2024-07-08 11:56:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个大小为(8,8,3)和(8,8)的数组。 必须使用python将第一个3D数组最后一列的前8个元素替换为最后一个2D数组的元素

基本上我在处理不同大小的图像。我提取图像的蓝色部分,对其进行一些计算并将其替换回来。提取的蓝色部分正在形成mxn阵列,而原始图像的dim=mxnxk

m目前正在制作尺寸为(4,4,3)的图像,该图像将扩展到更高维度的图像。这里,img是图像的维数=(4,4,3),q是从一些计算中得到的数组,这些计算得到的结果是大小(4,4)

img = cv2.imread("ori.jpg")
print(img)

img[:,2] = q       #here q is an 4x4 array

回溯(最近一次呼叫最后一次): 文件“C:\Python36\fresh\u seminar\wm\u E&;extract.py”,第195行,在 img[:,2]=q ValueError:无法将输入数组从形状(4,4)广播到形状(4,3)

这是最后一行代码的错误


Tags: 图像元素img尺寸数组cv2蓝色jpg
1条回答
网友
1楼 · 发布于 2024-07-08 11:56:13

经过这么长时间的努力,我终于找到了答案。 使用以下代码可以将阵列b替换为示例图像阵列的一部分。我知道这很简单,但我花了很多时间才明白

b = np.ones((8,8), dtype = int)     #array b of size(8,8) to be replaced
half_cover = cv2.imread("sample.jpg")  
print(half_cover)
print(half_cover.shape)              shape = (894, 894, 3)  

for i in range(8):
    for j in range(8):
        half_cover[i,j] = b[i,j]
print(half_cover)

相关问题 更多 >

    热门问题