shape = cv2.MORPH_RECT
    else:
        shape = cv2.MORPH_CROSS
    st = cv2.getStructuringElement(shape, (size, size))
    image = cv2.morphologyEx(img,
                             cv2.MORPH_GRADIENT,
                             kernel=st,
                             iterations=iter)
    cv2.imshow('results', image)


if __name__ == '__main__':
    print __doc__

    cvparam_dict = {}
    cvparam_dict['iterations'] = cvparam.sliderparam("Iterations", 5, 1,
                                                     updateImage)
    cvparam_dict['shape'] = cvparam.sliderparam("K Ellipse/Rect/Cross", 2, 1,
                                                updateImage)
    cvparam_dict['size'] = cvparam.kernelparam("K Size", 21, 5, updateImage)

    import argparse
    parser = argparse.ArgumentParser(
        description=
        "Interactively experiment with morphology gradient parameters.")
    parser.add_argument('file', help='image to threshold', type=str)
    # add a command line parameter for every slider parameter
    cvparam.addCommandLineArgs(cvparam_dict, parser)

    args = parser.parse_args()
    cvparam.setValuesFromCommandLine(cvparam_dict, args)
Example #2
0
    minLength = cvparam_dict["minLength"].value
    maxGapLength = cvparam_dict["maxGapLength"].value
    lines = cv2.HoughLinesP(edges, rho, theta, threshold=threshold, minLineLength=minLength, maxLineGap=maxGapLength)

    imag = img.copy()
    for x1, y1, x2, y2 in lines[0]:
        cv2.line(imag, (x1, y1), (x2, y2), (0, 255, 0), 2)
    cvparams.annotateImageWithParams(cvparam_dict, imag)
    cv2.imshow("results", imag)


if __name__ == "__main__":
    print __doc__

    cvparam_dict = {}
    cvparam_dict["threshold"] = cvparams.sliderparam("Threshold", 500, 50, updateImage)
    cvparam_dict["minLength"] = cvparams.sliderparam("Min Length", 500, 100, updateImage)
    cvparam_dict["maxGapLength"] = cvparams.sliderparam("Max Gap", 500, 20, updateImage)

    import argparse

    parser = argparse.ArgumentParser(description="Interactively experiment with HoughLinesP parameters.")
    parser.add_argument("file", help="image to threshold", type=str)
    # add a command line parameter for every slider parameter
    cvparams.addCommandLineArgs(cvparam_dict, parser)

    args = parser.parse_args()
    cvparams.setValuesFromCommandLine(cvparam_dict, args)

    from glob import glob
Example #3
0
        'invert'].value > 0 else cv2.THRESH_BINARY

    image = cv2.adaptiveThreshold(img,
                                  maxValue=255,
                                  adaptiveMethod=threshMethod,
                                  thresholdType=threshType,
                                  blockSize=blockSize,
                                  C=c)
    cv2.imshow('results', image)


if __name__ == '__main__':
    print __doc__

    cvparam_dict = {}
    cvparam_dict['useGaussian'] = cvparam.sliderparam("Use Gaussian", 1, 1,
                                                      updateImage)
    cvparam_dict['invert'] = cvparam.sliderparam("Invert", 1, 0, updateImage)
    cvparam_dict['c'] = cvparam.sliderparam("C", 30, 5, updateImage)
    cvparam_dict['blockSize'] = cvparam.kernelparam("Block Size (3,5,..)", 21,
                                                    5, updateImage)

    import argparse
    parser = argparse.ArgumentParser(
        description=
        "Interactively experiment with adaptiveThreshold parameters.")
    parser.add_argument('file', help='image to threshold', type=str)
    # add a command line parameter for every slider parameter
    cvparam.addCommandLineArgs(cvparam_dict, parser)

    args = parser.parse_args()
    cvparam.setValuesFromCommandLine(cvparam_dict, args)
Example #4
0
    for x1, y1, x2, y2 in lines:
        cv2.line(img, (x1, y1), (x2, y2), color, 2)


def updateImage():
    copy = img.copy()
    draw_lines(copy, lines)
    draw_lines(copy, vert_lines, color=(255, 127, 0))
    cv2.imshow('results', copy)


if __name__ == '__main__':
    print __doc__

    cvparam_dict = {}
    cvparam_dict['maxDegFromVert'] = cvparam.sliderparam(
        "Deg From Vert", 90, 10, updateMaxVertAngle)

    import argparse
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument('file', help='image(s) to threshold', type=str)
    # add a command line parameter for every slider parameter
    cvparam.addCommandLineArgs(cvparam_dict, parser)

    args = parser.parse_args()
    cvparam.setValuesFromCommandLine(cvparam_dict, args)

    from glob import glob
    for filename in glob(args.file):
        img = cv2.imread(filename)

        # extract lines
Example #5
0
def draw_lines(img, lines, color=(0,255,0)):
    for x1,y1,x2,y2 in lines:
        cv2.line(img,(x1,y1),(x2,y2),color,2)


def updateImage():
    copy = img.copy()
    draw_lines(copy, lines)
    draw_lines(copy, vert_lines, color=(255,127,0))
    cv2.imshow('results', copy)

if __name__ == '__main__':
    print __doc__

    cvparam_dict = {}
    cvparam_dict['maxDegFromVert'] = cvparam.sliderparam("Deg From Vert", 90, 10, updateMaxVertAngle)

    import argparse
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument('file', help='image(s) to threshold', type=str)
    # add a command line parameter for every slider parameter
    cvparam.addCommandLineArgs(cvparam_dict, parser)

    args = parser.parse_args()
    cvparam.setValuesFromCommandLine(cvparam_dict, args)

    from glob import glob
    for filename in glob(args.file):
        img = cv2.imread(filename)

        # extract lines
Example #6
0
                      cvparam_dict['threshold2'].value,
                      apertureSize=cvparam_dict['aperture'].value)

    imag = img.copy()
    imag /= 2
    imag[edges != 0] = (0, 255, 0)

    cvparams.annotateImageWithParams(cvparam_dict, imag)
    cv2.imshow('results', imag)


if __name__ == '__main__':
    print __doc__

    cvparam_dict = {}
    cvparam_dict['threshold1'] = cvparams.sliderparam("Threshold1", 2000, 500,
                                                      updateImage)
    cvparam_dict['threshold2'] = cvparams.sliderparam("Threshold2", 2000, 2000,
                                                      updateImage)
    cvparam_dict['aperture'] = cvparams.kernelparam("Aperture (3, 5, 7)", 7, 5,
                                                    updateImage)

    import argparse
    parser = argparse.ArgumentParser(
        description="Interactively experiment with Canny operator.")
    parser.add_argument('file',
                        help='image to threshold (wildcard ok)',
                        type=str)
    parser.add_argument('--blur',
                        help='blur preprocessing',
                        action='store_true')
    # add a command line parameter for every slider parameter
Example #7
0
    cvparams.annotateImageWithParams(cvparam_dict, copy)

    cv2.imshow('results', copy)


if __name__ == '__main__':
    print __doc__

    cvparam_dict = {}
    cvparam_dict['filterSize'] = cvparams.kernelparam("Filter Size", 100, 11,
                                                      updateImage)
    cvparam_dict['spaceKernelSize'] = cvparams.kernelparam(
        "Space Kernel Size", 150, 109, updateImage)
    cvparam_dict['colorKernelSize'] = cvparams.kernelparam(
        "Color Kernel Size", 150, 109, updateImage)
    cvparam_dict['erode'] = cvparams.sliderparam("Erode", 2, 0, updateImage)
    cvparam_dict['dilate'] = cvparams.sliderparam("Dilate", 2, 0, updateImage)
    cvparam_dict['threshK'] = cvparams.kernelparam("ThreshK", 21, 11,
                                                   updateImage)
    cvparam_dict['threshC'] = cvparams.sliderparam("ThreshC", 20, 10,
                                                   updateImage)

    import argparse
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument('file', help='image(s) to process', type=str)
    # add a command line parameter for every slider parameter
    cvparams.addCommandLineArgs(cvparam_dict, parser)

    args = parser.parse_args()
    cvparams.setValuesFromCommandLine(cvparam_dict, args)
Example #8
0
    copy = img.copy()
    squares = find_contours(copy)
    cv2.drawContours(copy, squares, -1, (0, 255, 0), 1 )

    cvparams.annotateImageWithParams(cvparam_dict, copy)

    cv2.imshow('results', copy)

if __name__ == '__main__':
    print __doc__

    cvparam_dict = {}
    cvparam_dict['filterSize'] = cvparams.kernelparam("Filter Size", 100, 11, updateImage)
    cvparam_dict['spaceKernelSize'] = cvparams.kernelparam("Space Kernel Size", 150, 109, updateImage)
    cvparam_dict['colorKernelSize'] = cvparams.kernelparam("Color Kernel Size", 150, 109, updateImage)
    cvparam_dict['erode'] = cvparams.sliderparam("Erode", 2, 0, updateImage)
    cvparam_dict['dilate'] = cvparams.sliderparam("Dilate", 2, 0, updateImage)
    cvparam_dict['threshK'] = cvparams.kernelparam("ThreshK", 21, 11, updateImage)
    cvparam_dict['threshC'] = cvparams.sliderparam("ThreshC", 20, 10, updateImage)

    import argparse
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument('file', help='image(s) to process', type=str)
    # add a command line parameter for every slider parameter
    cvparams.addCommandLineArgs(cvparam_dict, parser)

    args = parser.parse_args()
    cvparams.setValuesFromCommandLine(cvparam_dict, args)

    from glob import glob
    for filename in glob(args.file):
def updateImage():
    c = cvparam_dict['c'].value
    blockSize = cvparam_dict['blockSize'].value
    threshMethod = cv2.ADAPTIVE_THRESH_GAUSSIAN_C if cvparam_dict['useGaussian'].value > 0 else cv2.ADAPTIVE_THRESH_MEAN_C
    threshType = cv2.THRESH_BINARY_INV if cvparam_dict['invert'].value > 0 else cv2.THRESH_BINARY

    image = cv2.adaptiveThreshold(img, maxValue=255, adaptiveMethod=threshMethod, thresholdType=threshType, blockSize=blockSize, C=c)
    cv2.imshow('results', image)


if __name__ == '__main__':
    print __doc__

    cvparam_dict = {}
    cvparam_dict['useGaussian'] = cvparam.sliderparam("Use Gaussian", 1, 1, updateImage)
    cvparam_dict['invert'] = cvparam.sliderparam("Invert", 1, 0, updateImage)
    cvparam_dict['c'] = cvparam.sliderparam("C", 30, 5, updateImage)
    cvparam_dict['blockSize'] = cvparam.kernelparam("Block Size (3,5,..)", 21, 5, updateImage)

    import argparse
    parser = argparse.ArgumentParser(description="Interactively experiment with adaptiveThreshold parameters.")
    parser.add_argument('file', help='image to threshold', type=str)
    # add a command line parameter for every slider parameter
    cvparam.addCommandLineArgs(cvparam_dict, parser)

    args = parser.parse_args()
    cvparam.setValuesFromCommandLine(cvparam_dict, args)

    from glob import glob
    for filename in glob(args.file):
Example #10
0
import sliderparam as cvparams

def updateImage():
    destDepth = cv2.CV_32F; # should be higher than source depth to avoid overflow
    imgCopy = cv2.Sobel(img, ddepth=destDepth, dx=cvparam_dict['dx'].value, dy=cvparam_dict['dy'].value, ksize=cvparam_dict['kernelSize'].value,
                      scale=cvparam_dict['scale'].value, delta=cvparam_dict['delta'].value)

    cvparams.annotateImageWithParams(cvparam_dict, imgCopy)
    cv2.imshow('results', imgCopy)


if __name__ == '__main__':
    print __doc__

    cvparam_dict = {}
    cvparam_dict['dx'] = cvparams.sliderparam("dx", 2, 1, updateImage)
    cvparam_dict['dy'] = cvparams.sliderparam("dy", 2, 1, updateImage)
    cvparam_dict['kernelSize'] = cvparams.kernelparam("Kernel (3, 5,..)", 21, 5, updateImage)
    cvparam_dict['delta'] = cvparams.sliderparam("delta", 5, 0, updateImage)
    cvparam_dict['scale'] = cvparams.sliderparam("scale", 2, 1, updateImage)

    import argparse
    parser = argparse.ArgumentParser(description="Apply Sobel operator.")
    parser.add_argument('file', help='image to process', type=str)
    # add a command line parameter for every slider parameter
    cvparams.addCommandLineArgs(cvparam_dict, parser)

    args = parser.parse_args()
    cvparams.setValuesFromCommandLine(cvparam_dict, args)

    from glob import glob
    if cvparam_dict['shape'].value == 0:
        shape = cv2.MORPH_ELLIPSE
    elif cvparam_dict['shape'].value == 1:
        shape = cv2.MORPH_RECT
    else:
        shape = cv2.MORPH_CROSS
    st = cv2.getStructuringElement(shape, (size, size))
    image = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel=st, iterations=iter)
    cv2.imshow('results', image)


if __name__ == '__main__':
    print __doc__

    cvparam_dict = {}
    cvparam_dict['iterations'] = cvparam.sliderparam("Iterations", 5, 1, updateImage)
    cvparam_dict['shape'] = cvparam.sliderparam("K Ellipse/Rect/Cross", 2, 1, updateImage)
    cvparam_dict['size'] = cvparam.kernelparam("K Size", 21, 5, updateImage)

    import argparse
    parser = argparse.ArgumentParser(description="Interactively experiment with morphology gradient parameters.")
    parser.add_argument('file', help='image to threshold', type=str)
    # add a command line parameter for every slider parameter
    cvparam.addCommandLineArgs(cvparam_dict, parser)

    args = parser.parse_args()
    cvparam.setValuesFromCommandLine(cvparam_dict, args)

    from glob import glob
    for filename in glob(args.file):
        img = cv2.imread(filename)
Example #12
0
                                     cvparam_dict['kernelHeight'].value),
                               cvparam_dict['sigmaY'].value)

    cvparams.annotateImageWithParams(cvparam_dict, imgCopy)
    cv2.imshow('results', imgCopy)


if __name__ == '__main__':
    print __doc__

    cvparam_dict = {}
    cvparam_dict['kernelWidth'] = cvparams.kernelparam("Kernel X (3,5,..)", 51,
                                                       5, updateImage)
    cvparam_dict['kernelHeight'] = cvparams.kernelparam(
        "Kernel Y (3,5,..)", 51, 5, updateImage)
    cvparam_dict['sigmaY'] = cvparams.sliderparam("Sigma Y", 7, 0, updateImage)

    import argparse
    parser = argparse.ArgumentParser(
        description="Interactively experiment with blur operator.")
    parser.add_argument('file', help='image to threshold', type=str)
    # add a command line parameter for every slider parameter
    cvparams.addCommandLineArgs(cvparam_dict, parser)

    args = parser.parse_args()
    cvparams.setValuesFromCommandLine(cvparam_dict, args)

    from glob import glob
    for filename in glob(args.file):
        img = cv2.imread(filename)
        assert img is not None, "File " + args.file + " was not found."
Example #13
0
def updateImage():
    edges = cv2.Canny(gray, cvparam_dict['threshold1'].value, cvparam_dict['threshold2'].value, apertureSize=cvparam_dict['aperture'].value)

    imag = img.copy()
    imag /= 2
    imag[edges != 0] = (0, 255, 0)

    cvparams.annotateImageWithParams(cvparam_dict, imag)
    cv2.imshow('results', imag)


if __name__ == '__main__':
    print __doc__

    cvparam_dict = {}
    cvparam_dict['threshold1'] = cvparams.sliderparam("Threshold1", 2000, 500, updateImage)
    cvparam_dict['threshold2'] = cvparams.sliderparam("Threshold2", 2000, 2000, updateImage)
    cvparam_dict['aperture'] = cvparams.kernelparam("Aperture (3, 5, 7)", 7, 5, updateImage)


    import argparse
    parser = argparse.ArgumentParser(description="Interactively experiment with Canny operator.")
    parser.add_argument('file', help='image to threshold (wildcard ok)', type=str)
    parser.add_argument('--blur', help='blur preprocessing', action='store_true')
    # add a command line parameter for every slider parameter
    cvparams.addCommandLineArgs(cvparam_dict, parser)

    args = parser.parse_args()
    cvparams.setValuesFromCommandLine(cvparam_dict, args)

    from glob import glob
Example #14
0
    threshold = cvparam_dict['threshold'].value
    minLength =  cvparam_dict['minLength'].value
    maxGapLength = cvparam_dict['maxGapLength'].value
    lines = cv2.HoughLinesP(edges, rho, theta, threshold=threshold, minLineLength=minLength, maxLineGap=maxGapLength)

    imag = img.copy()
    for x1,y1,x2,y2 in lines[0]:
        cv2.line(imag,(x1,y1),(x2,y2),(0,255,0),2)
    cvparams.annotateImageWithParams(cvparam_dict, imag)
    cv2.imshow('results', imag)

if __name__ == '__main__':
    print __doc__

    cvparam_dict = {}
    cvparam_dict['threshold'] = cvparams.sliderparam("Threshold", 500, 50, updateImage)
    cvparam_dict['minLength'] = cvparams.sliderparam("Min Length", 500, 100, updateImage)
    cvparam_dict['maxGapLength'] = cvparams.sliderparam("Max Gap", 500, 20, updateImage)

    import argparse
    parser = argparse.ArgumentParser(description="Interactively experiment with HoughLinesP parameters.")
    parser.add_argument('file', help='image to threshold', type=str)
    # add a command line parameter for every slider parameter
    cvparams.addCommandLineArgs(cvparam_dict, parser)

    args = parser.parse_args()
    cvparams.setValuesFromCommandLine(cvparam_dict, args)

    from glob import glob
    for filename in glob(args.file):
        img = get_image(filename)
Example #15
0
                        ddepth=destDepth,
                        dx=cvparam_dict['dx'].value,
                        dy=cvparam_dict['dy'].value,
                        ksize=cvparam_dict['kernelSize'].value,
                        scale=cvparam_dict['scale'].value,
                        delta=cvparam_dict['delta'].value)

    cvparams.annotateImageWithParams(cvparam_dict, imgCopy)
    cv2.imshow('results', imgCopy)


if __name__ == '__main__':
    print __doc__

    cvparam_dict = {}
    cvparam_dict['dx'] = cvparams.sliderparam("dx", 2, 1, updateImage)
    cvparam_dict['dy'] = cvparams.sliderparam("dy", 2, 1, updateImage)
    cvparam_dict['kernelSize'] = cvparams.kernelparam("Kernel (3, 5,..)", 21,
                                                      5, updateImage)
    cvparam_dict['delta'] = cvparams.sliderparam("delta", 5, 0, updateImage)
    cvparam_dict['scale'] = cvparams.sliderparam("scale", 2, 1, updateImage)

    import argparse
    parser = argparse.ArgumentParser(description="Apply Sobel operator.")
    parser.add_argument('file', help='image to process', type=str)
    # add a command line parameter for every slider parameter
    cvparams.addCommandLineArgs(cvparam_dict, parser)

    args = parser.parse_args()
    cvparams.setValuesFromCommandLine(cvparam_dict, args)