首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TypeError:只有大小-1数组可以转换为Python标量-此错误

TypeError:只有大小-1数组可以转换为Python标量-此错误
EN

Stack Overflow用户
提问于 2019-07-31 08:25:56
回答 2查看 784关注 0票数 1

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

代码语言:javascript
运行
复制
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)

谢谢你的帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-31 08:31:21

试着用左下角的lw:lw+1替换lw,然后在后面的4行中做同样的操作。这应该可以纠正你的错误。

代码语言:javascript
运行
复制
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)
票数 2
EN

Stack Overflow用户

发布于 2019-07-31 08:55:33

让我们打印一些东西

代码语言:javascript
运行
复制
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)

产出:

代码语言:javascript
运行
复制
(10, 1)
(1, 10)
(10, 1)
(1, 10)

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

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

转置你的leftcornerrightrightcornerleft可以解决这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57286354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档