예제 #1
0
def questao5(img, img2):

    # a) Imagem A
    a.exibir("Original A", img, "original5a.png")

    # b) Imagem B
    a.exibir("Original B", img2, "original5b.png")

    # c) Combinar 0.2*A + 0.8*B
    alpha = 0.2
    beta = (1 - alpha)
    res = cv.addWeighted(img, alpha, img2, beta, 0.0)
    a.exibir("0.2*A + 0.8*B", res, "comb1_5c.png")

    # d) Combinar 0.5*A + 0.5*B
    alpha = 0.5
    beta = (1 - alpha)
    res = cv.addWeighted(img, alpha, img2, beta, 0.0)
    a.exibir("0.5*A + 0.5*B", res, "comb1_5d.png")

    # e) Combinar 0.8*A + 0.2*B
    alpha = 0.8
    beta = (1 - alpha)
    res = cv.addWeighted(img, alpha, img2, beta, 0.0)
    a.exibir("0.8*A + 0.2*B", res, "comb1_5e.png")

    cv.destroyAllWindows()
예제 #2
0
def questao2(img):

    # a) Imagem original
    a.exibir("Original", img, "original2.png")

    # b) gamma = 1.5
    r = a.correcaoGamma(img, 1.5)
    a.exibir("Gamma 1.5", r, "baboon1_2b.png")

    # c) gamma = 2.5
    r = a.correcaoGamma(img, 2.5)
    a.exibir("Gamma 2.5", r, "baboon1_2c.png")

    # d) gamma = 3.5
    r = a.correcaoGamma(img, 3.5)
    a.exibir("Gamma 3.5", r, "baboon1_2d.png")

    cv.destroyAllWindows()
예제 #3
0
def questao3(img):

    # a) Imagem original
    a.exibir("Original",img,"original3.png")

    # b) Plano de bit 0
    r = a.getPlano(img,0)
    a.exibir("Plano de bit 0",r,"baboon1_3b.png")

    # c) Plano de bit 4
    r = a.getPlano(img,4)
    a.exibir("Plano de bit 4",r,"baboon1_3c.png")

    # d) Plano de bit 7
    r = a.getPlano(img,7)
    a.exibir("Plano de bit 7",r,"baboon1_3d.png")

    cv.destroyAllWindows()
예제 #4
0
def questao1(img):

    # a) Imagem original

    a.exibir("Original", img, "original1.png")

    # b) Negativo da imagem
    imgNeg = cv.bitwise_not(img)
    a.exibir("Negativo", imgNeg, "city1_1b.png")

    # c) Espelhamento vertical
    imgFlip = cv.flip(img, 0)
    a.exibir("Espelhamento vertical", imgFlip, "city1_1c.png")

    # d) Imagem transformada
    rows, cols = img.shape
    g = img.copy()

    for i in range(rows):
        for j in range(cols):
            f = g[i, j]
            v = ((100 * f) / 255) + 100
            g.itemset((i, j), v)

    a.exibir("Imagem transformada", g, "city1_1d.png")

    # e) Linhas pares invertidas
    h = img.copy()

    for p in range(rows):
        if p % 2 == 0:
            r = h[p][::-1]
            h[p] = r

    a.exibir("Linhas pares invertidas", h, "city1_1e.png")

    # f) Reflexao de linhas
    i = img.copy()

    for p in range(rows // 2):
        r = i[p]
        i[rows - p - 1] = r

    a.exibir("Reflexao de linhas", i, "city1_1f.png")

    cv.destroyAllWindows()
예제 #5
0
def questao4(img):

    # a) Imagem original
    a.exibir("Original", img, "original4.png")

    # b) ordem dos blocos

    # Dicionario t armazena os blocos da imagem original
    t = {}

    # Dicionario p armazena a posicao de cada bloco na nova imagem
    p = {
        1: 6,
        2: 11,
        3: 13,
        4: 3,
        5: 8,
        6: 16,
        7: 1,
        8: 9,
        9: 12,
        10: 14,
        11: 2,
        12: 7,
        13: 4,
        14: 15,
        15: 10,
        16: 5
    }

    # Loop que extrai cada quadrado da imagem original em armazena em t
    linha = 1
    for i in range(4):
        for j in range(4):
            t[i + j + linha] = img[i * 128:(i + 1) * 128,
                                   j * 128:(j + 1) * 128]
        linha += 3

    # Loop que cria uma lista onde cada bloco aparece na ordem que deve ser
    # inserido na nova imagem
    blocos = []
    for i in t:
        dest = p.get(i)
        bloco = t.get(dest)
        blocos.append(bloco)

    # Loop que percorre a lista de blocos agrupando 2 a 2
    # os 4 blocos que formam uma linha
    linhas = []
    for b in range(0, 15, 4):
        temp1 = np.hstack((blocos[b], blocos[b + 1]))
        temp2 = np.hstack((blocos[b + 2], blocos[b + 3]))
        linha = np.hstack((temp1, temp2))
        linhas.append(linha)

    # Agrupa as 4 linhas formando a nova imagem completa
    temp1 = np.vstack((linhas[0], linhas[1]))
    temp2 = np.vstack((linhas[2], linhas[3]))
    res = np.vstack((temp1, temp2))

    a.exibir("Mosaico", res, "baboon1_4d.png")

    cv.destroyAllWindows()