#! /usr/bin/env python """ This script will test highgui's trackbar functionality """ # name if this test and it's requirements TESTNAME = "cvCreateTrackbar" REQUIRED = ["cvShowImage"] # needed for sys.exit(int) and .works file handling import os import sys import works # check requirements and delete old flag file, if it exists if not works.check_files(REQUIRED,TESTNAME): sys.exit(77) # import the necessary things for OpenCV from highgui import * from cv import * # some definitions win_name = "testing..." bar_name = "brightness" bar_count= 100 # position of imagefiles we need PREFIX=os.path.join(os.environ["srcdir"],"../../opencv_extra/testdata/python/images/") # 'moved' indicates if trackbar has been moved moved = False # 'range' indicates if trackbar was outside range [0..bar_count] range = False # function to call on a trackbar event def trackcall( p ): # Trackbar position must be in [0..bar_count] if (p > bar_count or p < 0): globals()["range"] = True cvConvertScale( image, image2,float(p)/float(bar_count) ) cvShowImage( win_name, image2 ); globals()["moved"] = True # create output window cvNamedWindow(win_name,CV_WINDOW_AUTOSIZE) image = cvLoadImage(PREFIX+"cvCreateTrackbar.jpg") image2 = cvLoadImage(PREFIX+"cvCreateTrackbar.jpg") cvShowImage(win_name,image) # create the trackbar and save return value res = cvCreateTrackbar( bar_name, win_name, 0, bar_count, trackcall ) # check return value if res == 0: # something went wrong, so return an error code print "(ERROR) Couldn't create trackbar." sys.exit(1) # init. window with image trackcall(bar_count/2) # reset 'moved' indicator moved = False # now give the user 20 seconds to do some input print "(INFO) Please move trackbar within the next 20 SECONDS to 'PASS' this test." print "(HINT) You can complete this test prematurely by pressing any key." print "(INFO) In the case of no user input, the test will be remarked as 'FAIL'." key = cvWaitKey(20000) if range: # trackbar position value was outside allowed range [0..bar_count] print "(ERROR) Trackbar position was outside range." sys.exit(1) if not moved and (key==-1): # trackbar has not been moved print "(ERROR) No user input detected." sys.exit(1) elif not moved and (key>0): # 20sec. passed, trackbar has been moved print "(INFO) No trackbar movement detected (but key pressed)." sys.exit(77) # create flag file for following tests works.set_file(TESTNAME) # return 0 ('PASS') sys.exit(0)