简体   繁体   English

如何在使用Opencv关闭python代码后保存轨迹栏值?

[英]How to Save the trackbar values after closing the python code using Opencv?

I am using opencv to detect the color of objects by using HSV trackbars values and I want my python code to save the latest changes I would make to the trackbars in opencv , when I start the code again, the trackbars will have the last values? 我使用opencv通过使用HSV轨迹栏值来检测对象的颜色,我希望我的python代码保存我将对opencv中的轨迹栏进行的最新更改,当我再次启动代码时,轨迹栏将具有最后的值? below is my code 下面是我的代码

import numpy as np
import cv2

# open the camera
cap = cv2.VideoCapture(0)

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()

One option is to write the values to a text file somewhere, then when the program starts, read the file and parse the values written in the file. 一种选择是将值写入某处的文本文件,然后在程序启动时,读取文件并解析文件中写入的值。

See: How could I save data after closing my program? 请参阅: 关闭程序后如何保存数据?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM