def drawImage(image,h,w,psize):
    """
    Draw the image as a continuous line on a surface h by w "pixels" where 
    each continuous line representation of a pixel in image is represented
    on the output suface using psize by psize "pixels".

    @param  image   an opencv image with at least 3 channels
    @param  h       integer representing the hight of the output surface
    @param  w       integer representing the width of the output surface
    @param  psize   ammount that each pixel in the input image is scaled up
    """
    h = (h/psize)-2
    w = (w/psize)-2
    size = opencv.cvSize(w,h)
    scaled = opencv.cvCreateImage(size,8,3)
    red = opencv.cvCreateImage(size,8,1)
    blue = opencv.cvCreateImage(size,8,1)
    green = opencv.cvCreateImage(size,8,1)
    opencv.cvSplit(scaled,blue,green,red,None)
    opencv.cvEqualizeHist(red,red)
    opencv.cvEqualizeHist(green,green)
    opencv.cvEqualizeHist(blue,blue)
    opencv.cvMerge(red,green,blue,None,scaled)
    opencv.cvResize(image,scaled,opencv.CV_INTER_LINEAR)
    opencv.cvNot(scaled,scaled)

    # Draw each pixel in the image
    xr = range(scaled.width)
    whitespace = 0
    for y in range(scaled.height):
        for x in xr:
            s = opencv.cvGet2D(scaled,y,x)
            s = [s[j] for j in range(3)]
            if (sum(s)/710.0 < 1.0/psize):
                whitespace = whitespace+psize
            else:
                if whitespace is not 0:
                    line(whitespace,6,(xr[0]>0))
                    whitespace = 0
                drawPixel([j/255.0 for j in s],psize,(xr[0]>0))
        if whitespace is not 0:
            line(whitespace,6,(xr[0]>0))
            whitespace = 0
        line(psize,2)
        xr.reverse()
        displayImage(output)
        events = pygame.event.get()
        for event in events:
            if event.type == QUIT:
		exit()
def main(argv=None):

    # declair globals
    global ser, output, curX, curY, last_dir

    # Open serial connection
    ser = serial.Serial(DEFAULT_SERIAL_PORT, 9600, timeout=1)
    last_dir = [None, None]

    # Print starting time stamp
    print time.strftime ('Start Time: %H:%M:%S')

    # Create the output image
    curX = 0
    curY = 0
    output = opencv.cvCreateImage(opencv.cvSize(DEFAULT_OUTPUT_WIDTH,DEFAULT_OUTPUT_HEIGHT), opencv.IPL_DEPTH_8U, 3)
    opencv.cvZero(output)
    opencv.cvNot(output,output)

    global window, screen
    # Initialize pygame if not already initialized
    if not pygame.display.get_init():
        pygame.init()
        window = pygame.display.set_mode((DEFAULT_OUTPUT_WIDTH,DEFAULT_OUTPUT_HEIGHT))
        pygame.display.set_caption("Etch-A-Sketch")
        screen = pygame.display.get_surface()
    
    # Draw the image
    calibrationRoutine(60)

    # Show the image
    displayImage(output)

    # Print end time stamp
    print time.strftime ('End Time: %H:%M:%S')

    # loop
    while(1):
        events = pygame.event.get()
        for event in events:
            if event.type == QUIT or (event.type == KEYDOWN):
		exit()
Example #3
0
def cmpFG(fgmask, fgmaskideal):
    '''Returns tuple (tp,tn,fp,fn)'''
    notfgmask = opencv.cvCloneMat(fgmask)
    opencv.cvNot(fgmask, notfgmask)
    notfgmaskideal = opencv.cvCloneMat(fgmask)
    opencv.cvNot(fgmaskideal, notfgmaskideal)
    res = opencv.cvCloneMat(fgmask)

    opencv.cvAnd(fgmask, fgmaskideal, res)
    tp = opencv.cvCountNonZero(res)

    opencv.cvAnd(notfgmask, notfgmaskideal, res)
    tn = opencv.cvCountNonZero(res)

    opencv.cvAnd(fgmask, notfgmaskideal, res)
    fp = opencv.cvCountNonZero(res)

    opencv.cvAnd(notfgmask, fgmaskideal, res)
    fn = opencv.cvCountNonZero(res)
    return (tp, tn, fp, fn)
Example #4
0
def cmpFG(fgmask,fgmaskideal):
    '''Returns tuple (tp,tn,fp,fn)'''
    notfgmask = opencv.cvCloneMat(fgmask)
    opencv.cvNot(fgmask,notfgmask)
    notfgmaskideal = opencv.cvCloneMat(fgmask)
    opencv.cvNot(fgmaskideal,notfgmaskideal)
    res = opencv.cvCloneMat(fgmask)

    opencv.cvAnd(fgmask,fgmaskideal,res)
    tp = opencv.cvCountNonZero(res)

    opencv.cvAnd(notfgmask,notfgmaskideal,res)
    tn = opencv.cvCountNonZero(res)

    opencv.cvAnd(fgmask,notfgmaskideal,res)
    fp = opencv.cvCountNonZero(res)

    opencv.cvAnd(notfgmask,fgmaskideal,res)
    fn = opencv.cvCountNonZero(res)
    return (tp,tn,fp,fn)
def main(argv=None):
    if argv is None:
        argv = sys.argv
    if len(argv) <= 1 or argv[1] is "-":
        im = DEFAULT_INPUT_IMAGE
    else:
        im = argv[1]
    if len(argv) <= 2 or argv[2] is "-":
        psize = DEFAULT_PIXEL_SCALE
    else:
        psize = int(argv[2])
    if len(argv) <= 3 or argv[3] is "-":
        h = DEFAULT_OUTPUT_HEIGHT
    else:
        h = int(argv[3])
    if len(argv) <= 4 or argv[4] is "-":
        w = DEFAULT_OUTPUT_WIDTH
    else:
        w = int(argv[4])
    if len(argv) <= 5 or argv[5] is "-":
        serialport = DEFAULT_SERIAL_PORT
    else:
        serialport = argv[5]

    # declair globals
    global ser, output, curX, curY, last_dir

    # Open serial connection
    if serialport is not -1:
        ser = serial.Serial(serialport, 9600, timeout=1)
    else:
        ser = 0
    last_dir = [None,None]

    # Print starting time stamp
    print time.strftime ('Start Time: %H:%M:%S')

    # Load the image
    image = highgui.cvLoadImage(im)

    # Create the output image
    curX = 0
    curY = 0
    output = opencv.cvCreateImage(opencv.cvSize(w,h), opencv.IPL_DEPTH_8U, 3)
    opencv.cvZero(output)
    opencv.cvNot(output,output)
    
    # Draw the image
    drawImage(image,h,w,psize)

    # Show the image
    displayImage(output)

    # Print end time stamp
    print time.strftime ('End Time: %H:%M:%S')

    # loop
    while(1):
        events = pygame.event.get()
        for event in events:
            if event.type == QUIT or (event.type == KEYDOWN):
		exit()