我的例子是我在这里做错了 我想将数组中的元素添加到变量中,但是每次尝试时,我都会遇到相同的错误。 等待解决方案建议
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)
在这里,leftcornerright
和rightcornerleft
是(1, 10)
2D数组。
因此,您不能应用int(leftcornerright[i])
,因为当i=0
,leftcornerright[i]
是(1, 10)
数组时,而不是数字或(1,1)
数组(标量(。
转置您的leftcornerright
和rightcornerleft
可以解决此问题。