TypeError:只能将Size-1阵列转换为Python标量这个错误



我的例子是我在这里做错了 我想将数组中的元素添加到变量中,但是每次尝试时,我都会遇到相同的错误。 等待解决方案建议

import numpy as np
from matplotlib import pyplot as plt
import cv2
img =cv2.imread("23A96F0E154BE344A4C.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
height = np.size(gray, 0)
width = np.size(gray, 1)
lw=int(width*0.05)
h=int(height*0.05)
rw =int(width-(width*0.05))
#lw = leftwidth rw=rightwitdh
leftcornerdown = gray[h:h+10, lw:lw+1]
leftcornerright =gray[h:h+1, lw:lw+10]
rightcornerdown = gray[h:h+10,rw-1:rw]
rightcornerleft = gray[h:h+1, rw-10:rw]
toplam = 0
for i in leftcornerright:
    toplam += i
for i in range(0, 10):
    toplam += int(leftcornerdown[i])
    toplam += int(leftcornerright[i])
    toplam += int(rightcornerdown[i])
    toplam += int(rightcornerleft[i])
print(toplam)

谢谢您的帮助

尝试在左下角中替换 lw:lw+1 CC_1,然后在4行中进行相同的操作。这应该解决您的错误。

leftcornerdown = gray[h:h+10, lw]
leftcornerright =gray[h, lw:lw+10]
rightcornerdown = gray[h:h+10,rw-1]
rightcornerleft = gray[h, rw-10:rw]
toplam = 0
for i in leftcornerright:
    toplam += i
for i in range(0, 10):
    toplam += int(leftcornerdown[i])
    toplam += int(leftcornerright[i])
    toplam += int(rightcornerdown[i])
    toplam += int(rightcornerleft[i])
print(toplam)

让我们打印一些东西

gray = np.arange(4000000).reshape((2000, 2000))
lw = int(width*0.05)
h = int(height*0.05)
rw = int(width-(width*0.05))
leftcornerdown = gray[h:h+10, lw:lw+1]
leftcornerright = gray[h:h+1, lw:lw+10]
rightcornerdown = gray[h:h+10,rw-1:rw]
rightcornerleft = gray[h:h+1, rw-10:rw]
print(leftcornerdown.shape)
print(leftcornerright.shape)
print(rightcornerdown.shape)
print(rightcornerleft.shape)

输出:

(10, 1)
(1, 10)
(10, 1)
(1, 10)

在这里,leftcornerrightrightcornerleft(1, 10) 2D数组。

因此,您不能应用int(leftcornerright[i]),因为当i=0leftcornerright[i](1, 10)数组时,而不是数字或(1,1)数组(标量(。

转置您的leftcornerrightrightcornerleft可以解决此问题。

相关内容

最新更新