def video():
    global flag, regArr, handle
    regNum = 0
    res, handle = ArducamSDK.Py_ArduCam_autoopen(cfg)
    if res == 0:
        openFlag = True
        print "device open success!"
        while (regArr[regNum][0] != 0xFFFF):
            ArducamSDK.Py_ArduCam_writeSensorReg(handle, regArr[regNum][0],
                                                 regArr[regNum][1])
            regNum = regNum + 1
        res = ArducamSDK.Py_ArduCam_beginCapture(handle)

        if res == 0:
            print "transfer task create success!"
            while flag:
                res = ArducamSDK.Py_ArduCam_capture(handle)
                if res != 0:
                    print "capture fail!"
                    break
                time.sleep(0.03)
                if flag == False:
                    break
        else:
            print "transfer task create fail!"
        res = ArducamSDK.Py_ArduCam_close(handle)

        if res == 0:
            openFlag = False
            print "device close success!"
        else:
            print "device close fail!"
    else:
        print "device open fail!"
def show2():
    global flag, regArr, handle
    global W_zoom, H_zoom, V_value, H_value, lx, ly, downFlag, saveFlag, saveNum
    regNum = 0
    res, handle = ArducamSDK.Py_ArduCam_autoopen(cfg)
    if res == 0:
        openFlag = True
        print "device open success!"
        while (regArr[regNum][0] != 0xFFFF):
            ArducamSDK.Py_ArduCam_writeSensorReg(handle, regArr[regNum][0],
                                                 regArr[regNum][1])
            regNum = regNum + 1
        res = ArducamSDK.Py_ArduCam_beginCapture(handle)
        if res == 0 and flag:
            print "transfer task create success!"
            res = ArducamSDK.Py_ArduCam_capture(handle)
            if ArducamSDK.Py_ArduCam_available(handle) > 0:
                print "estou available"
                res, data = ArducamSDK.Py_ArduCam_read(handle, Width * Height)

                image = Image.frombuffer("L", (Width, Height), data)
                img = np.array(image)
                height, width = img.shape[:2]
                img2 = cv2.cvtColor(img, COLOR_BYTE2RGB)

                if args.name and capture:
                    cv2.imwrite(args.name + "." + args.type, img2)
                if not args.show:
                    return
                if saveFlag:
                    saveFlag = False
                    saveNum += 1
                    name = ""
                    if "bmp" == args.type:
                        name = str(saveNum) + ".bmp"
                    if "png" == args.type:
                        name = str(saveNum) + ".png"
                    if "jpg" == args.type:
                        name = str(saveNum) + ".jpg"
                    cv2.imwrite(name, img2)

            if res != 0:
                print "capture fail!"
                return
            if flag == False:
                return
        else:
            print "transfer task create fail!"
        res = ArducamSDK.Py_ArduCam_close(handle)

        if res == 0:
            openFlag = False
            print "device close success!"
        else:
            print "device close fail!"
    else:
        print "device open fail!"
def readThread():
    global timestamps, images

    handle = {}
    data = {}
    
    regNum = 0
    res, handle = ArducamSDK.Py_ArduCam_autoopen(cfg)
    #print(handle)
    #print(3)
    if res == 0:
        print("device open success!")
        while (regArr[regNum][0] != 0xFFFF):
            ArducamSDK.Py_ArduCam_writeSensorReg(handle, regArr[regNum][0], regArr[regNum][1])
            regNum = regNum + 1
        #print(32143)
        res = ArducamSDK.Py_ArduCam_beginCapture(handle)
        if res == 0:
            print("transfer task create success!")
            while not rospy.is_shutdown():
                #print(2134124)
                res = ArducamSDK.Py_ArduCam_capture(handle)
                #print(res)
                if res == 0:
                    timestamp = rospy.Time.now()
                    #print(7324627864)
                    res, data = ArducamSDK.Py_ArduCam_read(handle, Width * Height)
                    #print(34242)
                    if res == 0:
                        #print(3746827346782)
                        ArducamSDK.Py_ArduCam_del(handle)
                        #print(374623846278)
                        timestamps.put(timestamp)
                        #print(3742846237846)
                        images.put(data)
                        #print(382746278346782)
                        time.sleep(0.03)
                    else:
                        print("read data fail!")
                if res != 0:
                    print("capture fail!")
                    break
        else:
            print("transfer task create fail!")

        res = ArducamSDK.Py_ArduCam_close(handle)
        if res == 0:
            print("device close success!")
        else:
            print("device close fail!")
    else:
        print("device open fail!")
Beispiel #4
0
def init_and_read_arducam():
    global flag, regArr, handle, openFlag
    regNum = 0
    res, handle = ArducamSDK.Py_ArduCam_autoopen(cfg)
    if res == 0:
        openFlag = True
        print("device open success!")
        while (regArr[regNum][0] != 0xFFFF):
            ArducamSDK.Py_ArduCam_writeSensorReg(handle, regArr[regNum][0],
                                                 regArr[regNum][1])
            regNum = regNum + 1
        res = ArducamSDK.Py_ArduCam_beginCapture(handle)

        if res == 0:
            print("transfer task create success!")
            while flag:
                res = ArducamSDK.Py_ArduCam_capture(handle)
                if res != 0:
                    print("capture failed!")
                    flag = False
                    break
                time.sleep(0.1)
                if flag == False:
                    break
        else:
            print("transfer task create fail!")

        time.sleep(2)
        res = ArducamSDK.Py_ArduCam_close(handle)
        if res == 0:
            openFlag = False
            print("device close success!")
        else:
            print("device close fail!")
    else:
        print("device open fail!")