见下文,以改进对我的问题的解释
我在我的 Raspberry Pi 上使用 OpenCV 4.1.2 编写了一个简单的线跟随器。一切正常,但现在我想调用一个也使用 camera.capture_continous 函数的函数。当我调用该函数时(它应该顺便检测相机框架中的圆圈)它只拍摄一张照片,检测到一些圆圈然后冻结并且不拍摄任何其他照片。这是我的源代码的一部分:
rawCapture = PiRGBArray(camera, size=(320, 180))
rawCaptureCircles = PiRGBArray(camera, size=(320, 180))
for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
counter = counter + 1
image = frame.array
line = cv2.inRange(image, (0, 0, 0), (255, 255, 75))
if counter > 10: #call function
function()
rawCapture.truncate(0)
和功能:
for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
imageCirles = frame.array
gray = cv2.cvtColor(imageCirles, cv2.COLOR_BGR2GRAY)
# detect circles in the image
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 2, 400)
# ensure at least some circles were found
if circles is not None:
# convert the (x, y) coordinates and radius of the circles to integers
circles = np.round(circles[0, :]).astype("int")
# loop over the (x, y) coordinates and radius of the circles
for (x, y, r) in circles:
# draw the circle in the output image, then draw a rectangle
cv2.circle(imageCirles, (x, y), r, (255, 255, 0), 4)
cv2.rectangle(imageCirles, (x - 5, y - 5), (x + 5, y + 5), (0, 0, 255), -1)
cv2.putText(imageCirles, str(((x - 160) / 10) - 24), (100, 100), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 0), 2)
我希望现在一切都或多或少地清楚了。
编辑:
希望对我的问题有更好的解释:
我很绝望!我已经尝试了(至少在我看来)所有可能的方法,但该功能仍然不起作用。但是,如果我将函数的源代码放入一个单独的 python 文件中并执行它,一切正常!我知道理论上的错误是什么,但我真的不知道如何修复它。这是问题的另一种解释:
名为 function() 的函数基本上可以正常工作(如果我将它放入一个空的 python 中并执行它),但每次在我的正常程序中执行 function() 时,我都会收到以下错误消息 The camera is already using port 0.这是因为在程序的正常循环中
for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True)
用于创建无限循环但是如果现在调用 function(),第一行
这导致我收到上述错误消息。是否必须关闭摄像头端口才能再次使用?
慕村225694
相关分类