mirror of
https://github.com/opencv/opencv.git
synced 2024-12-04 08:49:14 +08:00
96 lines
2.4 KiB
Python
Executable File
96 lines
2.4 KiB
Python
Executable File
#! /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)
|