littleprince59
littleprince59
采纳率0%
2021-04-27 16:16 阅读 20

如何实现python在虚拟环境GTA中自动驾驶程序的重启restart?

求救🆘 大神们好, 想请教一个问题,我现在和同学一起在写一个python项目, 是在GTA里实现自动驾驶汽车.代码中在 def button() 里面的 x.start() 会启动整个程序,我们还需要一个重启功能restart。 现在不知道怎么restart x.start()。

就是我们的这个程序有按钮 button  可以点一下  开始键   结束键   现在需要弄好重新启动键。

有一个思路是重新调用一下x.start()  但是具体不知道怎么操作

谢谢🙏感激不尽!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • software7503 CSDN专家-赖老师(软件之家) 2021-04-27 16:32

    重启restart做2步操作;

    1.调用结束键对应的功能停止;

    2.调用start函数功能启动。

    点赞 评论 复制链接分享
  • littleprince59 littleprince59 2021-04-27 16:49
    import numpy as np 
    from PIL import Image
    import cv2
    import time
    import glob
    from movement import forward, forwardleft, forwardright
    from mss import mss
    from Draw_lanes import Draw_lanes
    from numpy import ones,vstack
    from numpy.linalg import lstsq
    from statistics import mean
    
    Should_run=True
    
    def Roi(image, vertices):
        #blank mask:
        mask = np.zeros_like(image)
        # fill the mask
        cv2.fillPoly(mask, vertices, 255)
        # now only show the area that is the mask
        masked = cv2.bitwise_and(image, mask)
        return masked
    def Screen_Capture(top, left, width, height):
        monitor = {"top": top, "left": left, "width": width, "height": height}
        sct = mss()
        
    
        while(Should_run):
            last_time = time.time()
            img=sct.grab(monitor)
            screen= np.array(img) 
            
            last_time = time.time()
            ogim,newim, m1,m2 =Process_img(screen)
            
            cv2.imshow("orginal image", ogim)
            cv2.imshow("prossed image", newim)
            if m1 < 0 and m2 < 0:
                forwardright()
                print("right")
                
            elif m1 > 0  and m2 > 0:
               forwardleft()
               print("left")           
            else:
                forward()
                print("straight")
               
            if cv2.waitKey(25) & 0xFF == ord('x'):
                cv2.destroyAllWindows()
                break
    
    
    def Process_img(image):
        m1 =0
        m2 =0
        original_image = image
        # convert to gray
        processed_img = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
        # edge detection
        processed_img =  cv2.Canny(processed_img, threshold1 = 200, threshold2=300)
        region_of_interest_verticies= np.array([[200,450],[200,450],[300,200],[500,200],[600,450],[600,450],], np.int32)
        processed_img = cv2.GaussianBlur(processed_img,(5,5),0)
        processed_img= Roi(processed_img, [region_of_interest_verticies])
        lines= cv2.HoughLinesP(processed_img, 1, np.pi/180, 180,      20,         15)
    
        try:
            l1, l2, m1, m2 = Draw_lanes(original_image,lines)
           
            original_image=cv2.line(original_image, (l1[0], l1[1]), (l1[2], l1[3]), [0,255,255], 30)
            original_image=cv2.line(original_image, (l2[0], l2[1]), (l2[2], l2[3]), [0,255,255], 30)
        except Exception as e:
            print(str(e))
            pass
        return original_image,processed_img,m1, m2
    
    from tkinter import *
    from tkinter import ttk
    
    import threading
    import time
    
    started = False
    
    def initialize():
    	global a
    	a=0
    def self_drive():
        a=1
        global Should_run
        Should_run = True
        Screen_Capture(40,60,800,600)
        
    
    x=threading.Thread(target=self_drive)
    
    def self_drive_stop():
        global Should_run
        Should_run = False
        a=2
       
    def button1():
        if x.is_alive():
            x.run()
        
        if started==False:
            print("I made it here ")
            x.start()
            
    
    
    def inter():
    	root = Tk()
    	root.title("pyBros")
    	root.minsize(width=200,height=100)
    
    
    	button=Button(root, text="Self Drive Start",width=20,command=button1)
    	stop= Button(root,text="Stop Drive",width=20,command=self_drive_stop)
    	manual_drive=Button(root,text="manual Drive",width=20)
    
    	button.pack(side=LEFT)
    	stop.pack(side=LEFT)
    	manual_drive.pack(side=LEFT)
    
    	mainloop()
    
    点赞 评论 复制链接分享
  • QA_Assistant 有问必答小助手 2021-04-28 18:59

    您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了,您看下是否解决问题,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    点赞 评论 复制链接分享

相关推荐