gpt4 book ai didi

python - 'tuple'没有属性。 OpenCV Python

转载 作者:行者123 更新时间:2023-12-02 17:48:47 24 4
gpt4 key购买 nike

我试图在图像上传递一个窗口,以便获得窗口内的平均b,g,r像素值(不确定如何做到)。

目前,我试图让一个窗口通过我的图像,但是在第17行,我得到了错误:

Traceback (most recent call last):
File "C:\Python27\bgr.py", line 17, in <module>
pt2=(pt1.x+5,pt1.y+5)
AttributeError: 'tuple' object has no attribute 'x'

有任何想法吗?

这是我的代码:
# import packages
import numpy as np
import argparse
import cv2
import dateutil
from matplotlib import pyplot as plt

bgr_img = cv2.imread('images/0021.jpg')
height, width = bgr_img.shape[:2]

#split b,g,r channels
#b,g,r = cv2.split(bgr_img)

for i in range(0,height):
for j in range(0,width):
pt1=(i,j)
pt2=(pt1.x+5,pt1.y+5)
point.append([pt1,pt2])
cv2.rectangle(bgr_img,pt1,pt2,(255,0,0))

#cv2.imshow('image',bgr_img)
#cv2.waitKey(0)

提前致谢 :)

最佳答案

这行:

pt1 = (i, j)  # I have added spaces per the style guide

将新的 元组对象分配给名称 pt1(请参阅 the docsthe tutorial)。默认情况下,元组不具有 xy属性。您需要按索引访问元组中的第一项和第二项:
pt2 = (pt1[0] + 5, pt1[1] + 5)  # note 0-based indexing

或创建一个 collections.namedtuple ,它允许您定义属性:
from collections import namedtuple

Point = namedtuple("Point", "x y")

pt1 = Point(i, j)
pt2 = Point(pt1.x + 5, pt1.y + 5)

话虽如此,因为 ij仍在范围内,所以最简单的事情就是:
pt1 = (i, j)
pt2 = (i + 5, j + 5)

即使它们不在范围内,您也可以解压缩 pt1( tuplenamedtuple),并使用单独的 xy:
x, y = pt1
pt2 = (x + 5, y + 5)

关于python - 'tuple'没有属性。 OpenCV Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28585105/

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