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()
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()
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()
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()
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()