gpt4 book ai didi

python - 值错误 : setting an array element with a sequence when array is not a sequence

转载 作者:太空宇宙 更新时间:2023-11-03 22:05:58 24 4
gpt4 key购买 nike

您好,此代码旨在存储使用 open cv 绘制的矩形的坐标,并将结果编译为单个图像。

import numpy as np
import cv2

im = cv2.imread('1.jpg')
im3 = im.copy()

gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray,(5,5),0)
thresh = cv2.adaptiveThreshold(blur,255,1,1,11,2)



contours,hierarchy = cv2.findContours(thresh,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)


squares = []

for cnt in contours:
if cv2.contourArea(cnt)>50:
[x,y,w,h] = cv2.boundingRect(cnt)

if h>28 and h<34:
rect = (cv2.rectangle(im,(x,y),(x+w,y+h),(255,255,255),3))
squares.append(cv2.boundingRect(cnt))
cv2.imwrite('norm1.jpg',im)

crop_img = [[255 for x in xrange(377)] for x in xrange(377) ]

for s in squares:
s = squares[0]
x = s[0]
y = s[1]
w = s[2]
h = s[3]
img = im[y:y+h,x:x+w]
for col in range(y,y+h):
for row in range(x,x+w):
if img[col - y][row - x].tolist() == [0,0,0]:
crop_img[col][row] = [0,0,0]



cv2.imwrite("cropped.jpg", np.array(crop_img))

但是,它会抛出这个错误信息

File "C:\Users\Program\Desktop\new  1.py", line 43, in <module>
cv2.imwrite("cropped.jpg", np.array(crop_img))
ValueError: setting an array element with a sequence

我读到这可能是由“不均匀”矩阵引起的,但经过几轮测试后我确认它确实是一个正方形377 x 377 矩阵

供引用:“1.jpg”为下图

1

任何有关如何修复此错误的线索都将不胜感激!

最佳答案

这里的每个“像素”都有一个值。 crop_img = [[255 for x in xrange(377)] for x in xrange(377) ]

但稍后您将其中一些设置为包含 3 个值的列表。这就是问题所在。
我认为这应该可以解决它:
crop_img = [[[255, 255, 255] for x in xrange(377)] for x in xrange(377) ]

尽管您也可以从形状为 377,377, 3 的 numpy 数组开始,而不是事后转换它。

关于python - 值错误 : setting an array element with a sequence when array is not a sequence,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21133214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com