我正在研究GoPiGo,并且正在尝试使该机器人在摄像机检测到圆圈时移动。

我在这里遇到的主要问题是,当我尝试使用gopigo库以将函数用作fwd(),stop()等时,如果我在命令行中不使用sudo,则只需键入“python CircleDetector_MOVEMENT。 py”,它将检测gopigo库,但不检测picamera.ar​​ray:

Traceback (most recent call last):
  File "CircleDetector_MOVEMENT.py", line 2, in <module>
    from picamera.array import PiRGBArray
ImportError: No module named picamera.array

我从PIRGBarray导入。当我使用sudo python myprogram.py时,它不会检测到gopigo库,并且错误是下一个:
Traceback (most recent call last):
   File "CircleDetector_MOVEMENT.py", line 8, in <module>
    from gopigo import *        #Has the basic functions for controlling the          GoPiGo Robot
ImportError: No module named gopigo

我想这可能与许可有关,但我不知道如何解决。

所以,如果您知道在这里会发生什么,我将不胜感激。在他们的论坛上,我告诉我这是一个I2C问题,但是我在所有事情上都是菜鸟,我不知道该如何解决。

任何帮助表示赞赏。

附言这是我的代码,如果有帮助的话:
#import everything i need to get working all modules.
from picamera.array import PiRGBArray
from picamera import PiCamera
import time
import cv2
import os
import numpy as np
from gopigo import *    #Has the basic functions for controlling the GoPiGo     Robot
import sys  #Used for closing the running program
os.system('sudo modprobe bcm2835-v4l2')

h=200
w=300

camera = PiCamera()
camera.resolution = (w, h)
camera.framerate = 5
rawCapture = PiRGBArray(camera, size=(w, h))
time.sleep(0.1)


for frame in camera.capture_continuous(rawCapture, format="bgr",     use_video_port=True):
imagen_RGB = frame.array
copia_RGB = imagen_RGB.copy()



     gris = cv2.cvtColor(imagen_RGB, cv2.COLOR_BGR2GRAY)
     gris = cv2.medianBlur(gris,9)



    img_circulos = None
    img_circulos = cv2.HoughCircles(gris, cv2.cv.CV_HOUGH_GRADIENT, 1, 20, param1=50, param2=50, minRadius=0, maxRadius=0)


    if img_circulos is not None:

        v = 1
        img_circulos = np.round(img_circulos[0, :]).astype("int")


        for (x, y, r) in img_circulos:

            cv2.circle(copia_RGB, (x, y), r, (0, 255, 0), 3)
            cv2.rectangle(copia_RGB, (x - 5, y - 5),(x + 5, y + 5), (0, 128, 255, -1))
    if v == 1
       fwd()

    cv2.imshow("Imagen Combinada", copia_RGB)

    key = cv2.waitKey(1) & 0xFF
    rawCapture.truncate(0)
    if key == ord("q"):
        break

最佳答案

您是否正在使用虚拟环境来运行OpenCV代码?如果是,那么您可能必须将gopigo.py复制到您的虚拟环境并运行python <filename>才能使其运行。

08-16 12:06