gpt4 book ai didi

python - OpenCv Circle reshape() 和语法的基础是什么?

转载 作者:行者123 更新时间:2023-12-02 16:53:07 25 4
gpt4 key购买 nike

我刚刚编写了这个简单的代码来跟踪圆圈,它根本没有调整,我想在继续之前修复我的错误。它说:

ValueError:无法将大小为 6 的数组 reshape 为形状 (3,)

我试着在网上看,但我在我的头上。有人可以指出我正确的方向吗?

import cv2
import numpy as np


cap = cv2.VideoCapture(0)
def circle_image(image, circles):
image_circles = np.zeros_like(image)
if circles is not None:
for circle in circles:
rad, x1, y1 = circle.reshape(3)
cv2.circle(image_circles,(x1,y1),rad,(255,0,0), 10)
return image_circles

while cap.isOpened():
ret, frame = cap.read()
if ret == True:
gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
blur_frame = cv2.GaussianBlur(gray_frame, (5, 5), 0)
canny_frame = cv2.Canny(blur_frame, 100, 100)
tires = cv2.HoughCircles(canny_frame,cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=30, minRadius=0, maxRadius=0)

circles_to_blend = circle_image(canny_frame, tires)
combo_image = cv2.addWeighted(canny_frame, 0.8, circles_to_blend, 1, 1)

cv2.imshow('frame', combo_image)
if cv2.waitKey(1) & 0xFF == ord('q'):
break

cap.release()
cv2.destroyAllWindows()

最佳答案

实际上,我必须在 python 中测试 HoughCircles 才能理解问题。我不知道为什么,但是 HoughCircles 函数在 python 中返回一个圆圈列表。所以你想做

for circle in circles[0,:]:

让它工作。但是,在文档中您可以清楚地看到这是错误的:
rad, x1, y1 = circle.reshape(3)

圆圈应该是 x,y, rad,你也不需要 reshape 。在某些情况下,它可能是 4 个值(投票),并且这条线会失败,因为 4 个值不能重新整形为 3,但您可以执行以下操作:
x1, y1, rad = circle[:3] # this takes the first 3 numbers

我认为在这些更改之后,您的代码应该可以工作。

关于python - OpenCv Circle reshape() 和语法的基础是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55586691/

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