def search_stones(img, corners, dp=1.7):
    """Devuelve las circunferencias encontradas en una imagen.

    :Param img: imagen donde buscaremos las circunferencias
    :Type img: IplImage
    :Param corners: lista de esquinas
    :Type corners: list
    :Param dp: profundidad de búsqueda de círculos
    :Type dp: int
    :Keyword dp: 1.7 era el valor que mejor funcionaba. Prueba y error """
    gray = CreateMat(img.width, img.height,CV_8UC1)
    CvtColor(img, gray, CV_BGR2GRAY)
    
    gray_aux = CloneMat(gray)
    gray_aux_2 = CloneMat(gray)
    Canny(gray, gray_aux_2, 50,55,3)
    Smooth(gray_aux_2, gray_aux, CV_GAUSSIAN, 3, 5)
    
    # creo una matriz de para guardar los circulos encontrados
    circles = CreateMat(1, gray_aux.height*gray_aux.width, CV_32FC3)
    # r es el la mitad del tamaño de un cuadrado, el radio deseado 
    r = img.width/(GOBAN_SIZE*2)
    
    # HoughCircles(image, storage, method, dp, min_dist, param1, param2, 
    # min_radius, max_radius)
    HoughCircles(gray_aux, circles, CV_HOUGH_GRADIENT, dp, int(r*0.5), 50, 55,\
     int(r*0.7), int(r*1.2)) 
     
    return circles
Exemple #2
0
def resize(src, w, h, dst=None):
    if isinstance(dst, tuple):
        dst = CreateMat(*dst)

    if isinstance(src, ndarray):
        src = asMat(src)

    if dst is None:
        dst = CreateMat(int(h), int(w), src.type)

    Resize(src, dst)
    return dst
def filter_image(img):
    """Aplicamos unos filtros a las imágenes para facilitar su tratamiento. Buscamos contornos y suavizamos. 

    :Param img: imagen sin filtrar
    :Type img: CvMat
    :Return: imagen filtrada
    :Rtype: CvMat """
    aux_1 = CreateMat(img.rows, img.cols, img.type)
    aux_2 = CreateMat(img.rows, img.cols, img.type)
    Canny(img, aux_2, 50, 200, 3)
    Smooth(aux_2, aux_1, CV_GAUSSIAN, 3, 3)
    return aux_1
Exemple #4
0
def grayspace(src):
    if isinstance(src, ndarray):
        from skimage.color.colorconv import rgb2gray
        dst = rgb2gray(src)
    else:
        if src.channels > 1:
            dst = CreateMat(src.height, src.width, CV_8UC1)
            CvtColor(src, dst, CV_BGR2GRAY)
        else:
            dst = src

    return dst
Exemple #5
0
def perspective(img, corners):
    """Crea una imagen en modelo ideal del tablero dado en perspectiva.

    :Param img: imagen con el tablero en perspectiva
    :Todo: comprobar de que tipo es la imagen TODO
    :Type img: IplImage or CvMat
    :Param corners: lista de las esquinas del tablero
    :Type corners: list
    :Return: imagen en modelo ideal
    :Rtype: IplImage
    """

    max_edge = get_max_edge(corners)
    corners = get_external_corners(corners)
    # The goban have a relation 15/14 height/width
    relation = 14 / 15.0
    # In the sequence, the orden of corners are ul, dl, dr, ur
    corners_transf = ((0, 0), (0, max_edge), (max_edge, 0), (max_edge,
                                                             max_edge))
    mat = CreateMat(3, 3, CV_32FC1)
    GetPerspectiveTransform(corners, corners_transf, mat)
    src = CreateImage((max_edge, max_edge), img.depth, img.nChannels)
    WarpPerspective(img, src, mat)
    return src
Exemple #6
0

print """usage:
    cilpsum.py image [show|show_all] <path-to-image1> <path-to-image2>
    cilpsum.py video [show|show_all] <path-to-video> [M<pos-in-msec1>|F<framnumber1>] [M<pos-in-msec2>|F<framnumber2>]
        """

if sys.argv[1]=='video':
    capture = cv.CaptureFromFile(sys.argv[3])

    if sys.argv[4][0]=='M':
        cv.SetCaptureProperty(capture, MSEC_POS, int(sys.argv[4][1:]))
    elif sys.argv[4][0]=='F':
        cv.SetCaptureProperty(capture, FRAME_POS, int(sys.argv[4][1:]))
    img = cv.QueryFrame(capture)
    im_grayscale1 = CreateMat(img.height,  img.width,  CV_8U)
    CvtColor(img,im_grayscale1,BGR2GRAY);

    if sys.argv[5][0]=='M':
        cv.SetCaptureProperty(capture, MSEC_POS, int(sys.argv[5][1:]))
    elif sys.argv[5][0]=='F':
        cv.SetCaptureProperty(capture, FRAME_POS, int(sys.argv[5][1:]))

    img = cv.QueryFrame(capture)
    im_grayscale2 = CreateMat(img.height,  img.width,  CV_8U)
    CvtColor(img,im_grayscale2,BGR2GRAY);

elif sys.argv[1]=='image':
    im_grayscale1 = LoadImageM(sys.argv[3], GREYSCALE)
    im_grayscale2 = LoadImageM(sys.argv[4], GREYSCALE)
else: