AR Drone feedback

69 Views Asked by At

thanks for taking the time to read, and hopefully help me.

I have an AR.Drone 2.0 that I have already started to program/develop. I am using python for coding with opencv for the image processing. I want to be able to feedback this code to the drone. I was thinking about obtaining frames from the video stream and have the AR.Drone perform some tasks based upon the images. I, however, don't know where to start. It would be helpful for me if someone can point me in the right direction.

import numpy as np
import cv2

# open the camera
cap = cv2.VideoCapture('tcp://192.168.1.1:5555')

def nothing(x):
    pass
cv2.namedWindow('result')

# Starting with 100's to prevent error while masking
h,s,v = 100,100,100

# Creating track bar


cv2.createTrackbar('h', 'result',0,179,nothing)
cv2.createTrackbar('s', 'result',0,255,nothing)
cv2.createTrackbar('v', 'result',0,255,nothing)

while True:

        #read the image from the camera
        ret, frame = cap.read()        

        #You will need this later
        frame = cv2.cvtColor(frame, 35)



        #converting to HSV
        hsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)


        # get info from track bar and appy to result
        h = cv2.getTrackbarPos('h','result')
        s = cv2.getTrackbarPos('s','result')
        v = cv2.getTrackbarPos('v','result')


        # Normal masking algorithm
        lower_blue = np.array([h,s,v])
        upper_blue = np.array([180,255,255])

        mask = cv2.inRange(hsv,lower_blue, upper_blue)

        result = cv2.bitwise_and(frame,frame,mask = mask)

        cv2.imshow('result',result)

        #find center
        cnts=cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)[-2]

        center=None

        if len(cnts)>0:
            c=max(cnts, key=cv2.contourArea)
            ((x,y),radius)=cv2.minEnclosingCircle(c)
            M=cv2.moments(c)
            center=(int(M["m10"] / M["m00"]), int(M["m01"] / M["m00"]))

            if radius>10:
                #cv2.circle(frame, (int(x),int(y)), int(radius), 2)
                cv2.circle(frame, center,5,(0,0,255),-1)



        # color detection limits
        lB = 5
        lG = 50
        lR = 50
        hB = 15
        hG = 255
        hR = 255
        lowerLimits = np.array([lB, lG, lR])
        upperLimits = np.array([hB, hG, hR])

        # Our operations on the frame come here
        thresholded = cv2.inRange(frame, lowerLimits, upperLimits)
        outimage = cv2.bitwise_and(frame, frame, mask = thresholded)


        cv2.imshow('original', frame)

        # Display the resulting frame
        cv2.imshow('processed',outimage)




        # Quit the program when Q is pressed
        if cv2.waitKey(1) & 0xFF == ord('q'):
                break

# When everything done, release the capture
print 'closing program'
cap.release()
cv2.destroyAllWindows()'
0

There are 0 best solutions below