Ejemplo n.º 1
0
def encolher(imagem,factor_x, factor_y):
    """
    Encolhe a imagem de acordo com os factores.
    Estes devem ser inteiros.
    """
    largura = imagem.getWidth()
    altura = imagem.getHeight()
    
    nova_largura = largura // factor_x
    nova_altura =  altura // factor_y
    
    nova_imagem = cImage.EmptyImage(nova_largura,nova_altura)
    
    for coluna in range(nova_largura):
        for linha in range(nova_altura):
            pixel = imagem.getPixel(coluna * factor_x, linha * factor_y)
            nova_imagem.setPixel(coluna,linha, pixel)
    return nova_imagem
Ejemplo n.º 2
0
def espelho_h_s(imagem_fich):
    """Faz o espelho horizontal de uma imagem.
    Usa a parte superior."""
    imagem = cImage.FileImage(imagem_fich)
    largura = imagem.getWidth()
    altura = imagem.getHeight()
    janela = cImage.ImageWin('Espelho Vertical Superior', 2*largura,altura)
    imagem.draw(janela)

    nova_imagem = cImage.EmptyImage(largura,altura)
    for coluna in range(largura):
        for linha in range(altura//2):
            pixel = imagem.getPixel(coluna, linha)
            nova_imagem.setPixel(coluna,linha,pixel)
            nova_imagem.setPixel(coluna,altura - linha - 1,pixel)
    nova_imagem.setPosition(largura + 1, 0)
    nova_imagem.draw(janela)
    janela.exitOnClick()
def negativo_imagem(imagem_ficheiro):

    imagem_velha = cImage.FileImage(imagem_ficheiro)
    largura = imagem_velha.getWidth()
    altura = imagem_velha.getHeight()
    janela = cImage.ImageWin('Negativos', 2 * largura, altura)
    imagem_velha.draw(janela)

    imagem_nova = cImage.EmptyImage(largura, altura)

    for coluna in range(largura):
        for linha in range(altura):
            pixel_original = imagem_velha.getPixel(coluna, linha)
            novo_pixel = negativo_pixel(pixel_original)
            imagem_nova.setPixel(coluna, linha, novo_pixel)
    imagem_nova.setPosition(largura + 1, 0)
    imagem_nova.draw(janela)
    janela.exitOnClick()
def removeGreen(image):
    myimagewindow = cImage.ImageWin("Image Processing",600,200)
    oldimage = cImage.FileImage(image)
    oldimage.draw(myimagewindow)

    width = oldimage.getWidth()
    height = oldimage.getHeight()
    newim = cImage.EmptyImage(width,height)

    for row in range(height):
        for col in range(width):
            originalPixel = oldimage.getPixel(col,row)
            newPixel = noGreen(originalPixel)
            newim.setPixel(col,row,newPixel)

    newim.setPosition(width+1,0)
    newim.draw(myimagewindow)
    myimagewindow.exitOnClick()
def altera(imagem, factor_x, factor_y):
    """Altera a imagem de acordo com os factores.
    Estes devem ser inteiros.
    """
    largura = imagem.getWidth()
    altura = imagem.getHeight()

    nova_imagem = cImage.EmptyImage(factor_x * largura, factor_y * altura)

    for coluna in range(largura):
        for linha in range(altura):
            pixel = imagem.getPixel(coluna, linha)

            for i_x in range(factor_x):
                for i_y in range(factor_y):
                    nova_imagem.setPixel(factor_x * coluna + i_x,
                                         factor_y * linha + i_y, pixel)
    return nova_imagem
Ejemplo n.º 6
0
def main():
    win = image.ImageWin()
    img = image.Image("spacetacocat.gif")
    w = img.getWidth()
    h = img.getHeight()
    newImage = image.EmptyImage(w,h)

    for row in range(h):
        for col in range(w):
            p = img.getPixel(col,row)
            newImage.setPixel(col,row,p)


    

    
    newImage.draw(win)
    win.exitonclick()
Ejemplo n.º 7
0
def espelho_h_d(imagem_fich):
    """Faz o espelho orizontal de uma imagem.
    Usa a parte direita."""
    imagem = cImage.FileImage(imagem_fich)
    largura = imagem.getWidth()
    altura = imagem.getHeight()
    janela = cImage.ImageWin('Espelho Horizontal Direita', 2*largura,altura)
    imagem.draw(janela)

    nova_imagem = cImage.EmptyImage(largura,altura)
    for coluna in range(largura/2, largura):
        for linha in range(altura):
            pixel = imagem.getPixel(coluna, linha)
            nova_imagem.setPixel(coluna,linha,pixel)
            nova_imagem.setPixel(largura - coluna - 1,linha,pixel)
    nova_imagem.setPosition(largura + 1, 0)
    nova_imagem.draw(janela)
    janela.exitOnClick()
def noise_reduction(median):

    img = image.Image(input("Enter image name, including file extension: "))
    newimg = image.EmptyImage(img.getWidth(), img.getHeight())

    for x in range(1,
                   img.getWidth() -
                   1):  # ignore the edge pixels for simplicity
        for y in range(1,
                       img.getHeight() -
                       1):  # ignore the edge pixels for simplicity

            p0 = img.getPixel(x - 1, y - 1)
            p1 = img.getPixel(x - 1, y)
            p2 = img.getPixel(x - 1, y + 1)
            p3 = img.getPixel(x, y - 1)
            p4 = img.getPixel(x, y)
            p5 = img.getPixel(x, y + 1)
            p6 = img.getPixel(x + 1, y - 1)
            p7 = img.getPixel(x + 1, y)
            p8 = img.getPixel(x + 1, y + 1)

            r = int(
                median([
                    p0[0], p1[0], p2[0], p3[0], p4[0], p5[0], p6[0], p7[0],
                    p8[0]
                ]))
            g = int(
                median([
                    p0[1], p1[1], p2[1], p3[1], p4[1], p5[1], p6[1], p7[1],
                    p8[1]
                ]))
            b = int(
                median([
                    p0[2], p1[2], p2[2], p3[2], p4[2], p5[2], p6[2], p7[2],
                    p8[2]
                ]))

            newPixel = image.Pixel(r, g, b)
            newimg.setPixel(x, y, newPixel)

    win = image.ImageWin()
    newimg.draw(win)
    win.exitonclick()
def makeRectangle(width, height, desiredPixel):
    """
    Create a rectangular image of specified size and color

    Arguments:
        width: desired width, in pixels, of rectangle
        height: desired height, in pixels, of rectangle
        desiredPixel: color for each pixel in the rectangle

    Returns:
        a rectangle with the specified properties
    """
    resultImage = cImage.EmptyImage(width + 100, height + 100)

    for col in range(height):
        for row in range(width):
            resultImage.setPixel(row, col, desiredPixel)

    return resultImage
def imagem_cinzentos(imagem_fich):
    """ Transforma para escala de cinzentos a imagem."""

    imagem = cImage.FileImage(imagem_fich)
    largura = imagem.getWidth()
    altura = imagem.getHeight()

    janela = cImage.ImageWin('Escala de cinzentos', 2 * largura, altura)
    imagem.draw(janela)
    nova_imagem = cImage.EmptyImage(largura, altura)

    for coluna in range(largura):
        for linha in range(altura):
            pixel = imagem.getPixel(coluna, linha)
            novo_pixel = pixel_cinzento(pixel)
            nova_imagem.setPixel(coluna, linha, novo_pixel)
    nova_imagem.setPosition(largura + 1, 0)
    nova_imagem.draw(janela)
    janela.exitOnClick()
Ejemplo n.º 11
0
def reforca_vermelho(imagem_fich):
    """ Intensifica vermelho."""

    imagem = cImage.FileImage(imagem_fich)
    largura = imagem.getWidth()
    altura = imagem.getHeight()

    janela = cImage.ImageWin('Sem Vermelho', 2 * largura, altura)
    imagem.draw(janela)
    nova_imagem = cImage.EmptyImage(largura, altura)

    for coluna in range(largura):
        for linha in range(altura):
            pixel = imagem.getPixel(coluna, linha)
            novo_pixel = cImage.Pixel(255, pixel.getGreen(), pixel.getBlue())
            nova_imagem.setPixel(coluna, linha, novo_pixel)
    nova_imagem.setPosition(largura + 1, 0)
    nova_imagem.draw(janela)
    janela.exitOnClick()
Ejemplo n.º 12
0
    def double(self, draw=0):
        "Double the size of the image"
        # The canvas size gets annoyingly big so by default we avoid drawing here.
        self.draw = draw
        # We overwrite self.newimg because we need double the canvas size.
        self.newimg = image.EmptyImage(self.width * 2, self.height * 2)
        # In case we do decide to draw, self.win needs double canvas, too.
        if self.draw:
            self.win = image.ImageWin(self.img_file, self.width * 2,
                                      self.height * 2)

        for y in range(self.height):
            for x in range(self.width):
                p = self.oldimg.getPixel(x, y)
                self.newimg.setPixel(2 * x, 2 * y, p)
                self.newimg.setPixel(2 * x + 1, 2 * y, p)
                self.newimg.setPixel(2 * x, 2 * y + 1, p)
                self.newimg.setPixel(2 * x + 1, 2 * y + 1, p)
        self.write("_double", 0)
Ejemplo n.º 13
0
def cria_imagem_simples(largura, altura):
    pixel_vermelho = cImage.Pixel(255,0,0)
    pixel_azul = cImage.Pixel(0,0,255) 
    
    imagem = cImage.EmptyImage(largura,altura)
    for coluna in range(largura):
        for linha in range(altura):
            if coluna % 10 == 0:
                imagem.setPixel(coluna,linha, pixel_vermelho)
            else:
                imagem.setPixel(coluna,linha, pixel_azul)
    imagem.setPosition(largura,altura) 
    
    janela = cImage.ImageWin('Imagem Simples', 2*largura,2*altura)
    janela.setBackground('green')
    
    imagem.draw(janela)
    
    janela.exitOnClick()
def removeRed():

    img = image.Image(input("Enter image name, including file extension: "))
    newimg = image.EmptyImage(img.getWidth(), img.getHeight())

    for x in range(img.getWidth()):
        for y in range(img.getHeight()):

            p = img.getPixel(x, y)
            r = 0
            g = p[1]
            b = p[2]

            newPixel = image.Pixel(r, g, b)
            newimg.setPixel(x, y, newPixel)

    win = image.ImageWin()
    newimg.draw(win)
    win.exitonclick()
def nul_change_image():

    img = image.Image(input("Enter image name, including file extension: "))
    newimg = image.EmptyImage(img.getWidth(), img.getHeight())

    for x in range(img.getWidth()):
        for y in range(img.getHeight()):

            p = img.getPixel(x, y)
            r = int(p[0])
            g = int(p[1])
            b = int(p[2])

            newPixel = image.Pixel(r, g, b)
            newimg.setPixel(x, y, newPixel)

    win = image.ImageWin()
    newimg.draw(win)
    win.exitonclick()
Ejemplo n.º 16
0
def convolve_geral(imagem_fich, kernel):

    imagem = cImage.FileImage(imagem_fich)
    largura = imagem.getWidth()
    altura = imagem.getHeight()
    janela_antiga = cImage.ImageWin('Original', largura, altura)
    mostra_imagem_c(imagem, janela_antiga)
    nova_imagem = cImage.EmptyImage(largura, altura)

    for linha in range(1, altura - 1):
        for coluna in range(1, largura - 1):
            r, g, b = convolve_todos(imagem, linha, coluna, kernel)
            pixel_cor = cImage.Pixel(r, g, b)
            pixel_cinza = pixel_cinzento(pixel_cor)
            nova_imagem.setPixel(coluna, linha, pixel_cor)
    janela_nova = cImage.ImageWin('Transformada', largura, altura)
    mostra_imagem_c(nova_imagem, janela_nova)
    janela_antiga.exitOnClick()
    janela_nova.exitOnClick()
def sepiaTone():

    img = image.Image(input("Enter image name, including file extension: "))
    newimg = image.EmptyImage(img.getWidth(), img.getHeight())

    for x in range(img.getWidth()):
        for y in range(img.getHeight()):

            p = img.getPixel(x, y)
            newRed = int(p[0] * .393 + p[1] * .769 + p[2] * .189)
            newGreen = int(p[0] * .349 + p[1] * .686 + p[2] * .168)
            newBlue = int(p[0] * .272 + p[1] * .534 + p[2] * .131)

            newPixel = image.Pixel(newRed, newGreen, newBlue)
            newimg.setPixel(x, y, newPixel)

    win = image.ImageWin()
    newimg.draw(win)
    win.exitonclick()
Ejemplo n.º 18
0
def median (im, width, height, param={}) : 
    import cImage
    newImage = cImage.EmptyImage(width,height)
    
    filterWidth = param.get('FilterWidth', 3)
    filterHeight = param.get('FilterHeight', 3)
    heightBuffer = height - filterHeight
    widthBuffer = width - filterWidth
    for row in range(height):
        for col in range(width):
            if col < filterWidth or col > widthBuffer or row < filterHeight or row > heightBuffer:
                old_pixel = im.getPixel(col, row)
                newImage.setPixel(col, row, old_pixel)
            else :
                minWidth = col - filterWidth//2
                maxWidth = col + filterWidth//2
                minHeight = row - filterHeight//2
                maxHeight = row + filterHeight//2
                rlist = []
                glist = []
                blist = []
                for width in range(minWidth, maxWidth) :
                    pixel = im.getPixel(width, row)
                    rlist.append(pixel.getRed())
                    glist.append(pixel.getGreen())
                    blist.append(pixel.getBlue())
                for height in range(minHeight, maxHeight) :
                    pixel = im.getPixel(col, height)
                    rlist.append(pixel.getRed())
                    glist.append(pixel.getGreen())
                    blist.append(pixel.getBlue())
                rlist = sorted(rlist)
                glist = sorted(glist)
                blist = sorted(blist)
                r = int(sum(rlist[(len(rlist)//2)-1:(len(rlist)//2)+1]))//2
                g = int(sum(glist[(len(glist)//2)-1:(len(glist)//2)+1]))//2
                b = int(sum(blist[(len(blist)//2)-1:(len(blist)//2)+1]))//2
                
                new_pixel=cImage.Pixel(r, g, b)
                newImage.setPixel(col,row,new_pixel)
                
    return newImage
Ejemplo n.º 19
0
def arco(x, y, raio, amplitude):
    """ 
    Desenha (um arco de circunferência) com centro em (x,y) e raio.
    """
    janela = cImage.ImageWin('Janela', 600, 400)
    imagem = cImage.EmptyImage(600, 400)
    pixel_branco = cImage.Pixel(255, 255, 255)
    for coluna in range(600):
        for linha in range(400):
            imagem.setPixel(coluna, linha, pixel_branco)

    #imagem.setPosition(x,y)
    pixel = cria_random_pixel()

    for angulo in range(amplitude):
        cordx = (raio * math.cos((math.pi / float(180)) * angulo)) + x
        cordy = (raio * math.sin((math.pi / float(180)) * angulo)) + y
        imagem.setPixel(cordx, cordy, pixel)
    imagem.draw(janela)
    janela.exitOnClick()
Ejemplo n.º 20
0
def desenha_linha(p_1,p_2):
    """Desenha uma linha entre dois pontos."""
    x_1 = p_1[0]
    y_1 = p_1[1]
    x_2 = p_2[0]
    y_2 = p_2[1]
    janela = cImage.ImageWin('Linha', 3* abs(x_2 - x_1), 3*abs(y_2 - y_1))
    janela.setBackground((0,255,0))
    
    imagem = cImage.EmptyImage(abs(x_2 - x_1),abs(y_2 - y_1))
    print(imagem.getWidth(), imagem.getHeight())
    pix = cImage.Pixel(255,0,0)
    for x in range(0, imagem.getWidth()):
        for k in range(0, imagem.getHeight()):
            imagem.setPixel(x,k,cImage.Pixel(0,255,0))
        y = int(x * ((y_2 - y_1)/(x_2 - x_1)) + y_1 - x_1 * ((y_2 - y_1)/ (x_2 - x_1)))
        imagem.setPixel(x,y,pix)
    imagem.setPosition(janela.getWidth()//2 - imagem.getWidth()//2,janela.getHeight()//2 - imagem.getHeight()//2)
    imagem.draw(janela)
    janela.exitOnClick()
def negative():

    img = image.Image(input("Enter image name, including file extension: "))
    newimg = image.EmptyImage(img.getWidth(), img.getHeight())

    for x in range(img.getWidth()):
        for y in range(img.getHeight()):

            p = img.getPixel(x, y)
            r = 255 - p[
                0]  # using index[0] to access red intensity, instead of newred = 255 - p.getRed()
            g = 255 - p[1]
            b = 255 - p[2]

            newPixel = image.Pixel(r, g, b)
            newimg.setPixel(x, y, newPixel)

    win = image.ImageWin()
    newimg.draw(win)
    win.exitonclick()
Ejemplo n.º 22
0
Archivo: lab4.py Proyecto: clmay/school
def noRed(img):
    """Remove all the red values from an image"""

    img = image.Image(img)
    newimg = image.EmptyImage(img.getWidth(), img.getHeight())
    win = image.ImageWin()

    for col in range(img.getWidth()):
        for row in range(img.getHeight()):
            p = img.getPixel(col, row)

            noR = 0
            g = p.getGreen()
            b = p.getBlue()

            newp = image.Pixel(noR, g, b)
            newimg.setPixel(col, row, newp)

    newimg.draw(win)
    win.exitonclick()
def makeDiagonal(size, desiredPixel):
    """
    Create an image with dimensions (size x size) of a given pixel in the
    shape of a diagonal line from the northwest to southeast corners.

    Arguments:
        size: width and height, in pixels, of image to be generated
        desiredPixel: color of diagonal line (background will be black)

    Returns:
        a square image with the specified properties
    """
    # Begin with a square image with all black pixels
    resultImage = cImage.EmptyImage(size, size)

    # Set pixels along the diagonal

    for i in range(size):
        resultImage.setPixel(i, i, desiredPixel)
    return resultImage
Ejemplo n.º 24
0
def convolve_geral(imagem_fich, kernel):
    """ Convolve imagem a cores dado o kernel. """
    imagem = cImage.FileImage(imagem_fich)
    largura = imagem.getWidth()
    altura = imagem.getHeight()
    janela_antiga = cImage.ImageWin('Original', largura, altura)
    mostra_imagem_c(imagem, janela_antiga)
    nova_imagem = cImage.EmptyImage(largura, altura)

    for linha in range(1, altura - 1):
        for coluna in range(1, largura - 1):
            r, g, b = convolve_cor(imagem, linha, coluna, kernel)
            pixel_cor = cImage.Pixel(r, g, b)
            # se for em escala de cinzentos incluir e alterar setPixel
            #pixel_cinza = pixel_cinzento(pixel_cor)
            nova_imagem.setPixel(coluna, linha, pixel_cor)
    janela_nova = cImage.ImageWin('Transformada', largura, altura)
    mostra_imagem_c(nova_imagem, janela_nova)
    janela_antiga.exitOnClick()
    janela_nova.exitOnClick()
def smooth():

    img = image.Image(input("Enter image name, including file extension: "))
    newimg = image.EmptyImage(img.getWidth(), img.getHeight())

    for x in range(img.getWidth() - 1):
        for y in range(img.getHeight() - 1):

            p0 = img.getPixel(x, y)
            p1 = img.getPixel(x + 1, y)
            newRed = int(((p0.getRed()) + (p1.getRed())) / 2)
            newGreen = int(((p0.getGreen()) + (p1.getGreen())) / 2)
            newBlue = int(((p0.getBlue()) + (p1.getBlue())) / 2)

            newPixel = image.Pixel(newRed, newGreen, newBlue)
            newimg.setPixel(x, y, newPixel)

    win = image.ImageWin()
    newimg.draw(win)
    win.exitonclick()
Ejemplo n.º 26
0
def expcImage(img):
    '''
    This function will take a cImage object and expand it to be double its original dimensions.
    :param img: cImage image object, A x B, png format.
    :return:  cImage image object, 2A x 2B, png format
    '''
    oldw = img.getWidth()
    oldh = img.getHeight()

    newim = image.EmptyImage(oldw * 2, oldh * 2)
    for row in range(oldh):
        for col in range(oldw):
            oldpixel = img.getPixel(col, row)

            newim.setPixel(2 * col, 2 * row, oldpixel)
            newim.setPixel(2 * col + 1, 2 * row, oldpixel)
            newim.setPixel(2 * col, 2 * row + 1, oldpixel)
            newim.setPixel(2 * col + 1, 2 * row + 1, oldpixel)

    return newim
Ejemplo n.º 27
0
def preto_branco(imagem_fich, limiar):
    """ Transforma para imagem a preto e branco."""

    imagem = cImage.FileImage(imagem_fich)
    largura = imagem.getWidth()
    altura = imagem.getHeight()

    nova_imagem = cImage.EmptyImage(largura, altura)

    for coluna in range(largura):
        for linha in range(altura):
            pixel = imagem.getPixel(coluna, linha)
            pixel_aux = pixel_cinzento(pixel)
            if pixel_aux.getRed() < limiar:
                novo_pixel = cImage.Pixel(0, 0, 0)
            else:
                novo_pixel = cImage.Pixel(255, 255, 255)
            nova_imagem.setPixel(coluna, linha, novo_pixel)

    return nova_imagem
def black_and_white():

    img = image.Image(input("Enter image name, including file extension: "))
    newimg = image.EmptyImage(img.getWidth(), img.getHeight())

    for x in range(img.getWidth()):
        for y in range(img.getHeight()):

            p = img.getPixel(x, y)
            avg_pixel = int((p[0] + p[1] + p[2]) / 3)

            if avg_pixel > 255 / 2:
                newPixel = image.Pixel(255, 255, 255)
            else:
                newPixel = image.Pixel(0, 0, 0)

            newimg.setPixel(x, y, newPixel)

    win = image.ImageWin()
    newimg.draw(win)
    win.exitonclick()
Ejemplo n.º 29
0
def blur(img):
    """ Diminuição da pixelização"""
    largura = img.getWidth()
    altura = img.getHeight()
    imagem = img.toList()
    nova_imagem = cImage.EmptyImage(largura, altura)
    for coluna in range(1, largura - 1):
        for linha in range(1, altura - 1):
            pixel = img.getPixel(coluna, linha)
            # Calcula valores da vizinhança
            lista_pix = [
                imagem[linha + i_y][coluna + i_x] for i_y in [-1, 0, 1]
                for i_x in [-1, 0, 1]
            ]
            # Suaviza
            r = sum(get_red(lista_pix)) // 9
            g = sum(get_green(lista_pix)) // 9
            b = sum(get_blue(lista_pix)) // 9
            novo_pixel = cImage.Pixel(r, g, b)
            nova_imagem.setPixel(coluna, linha, novo_pixel)
    return nova_imagem
Ejemplo n.º 30
0
def funde(imagem1, imagem2, funcao):

    largura_1 = imagem1.getWidth()
    altura_1 = imagem1.getHeight()
    largura_2 = imagem2.getWidth()
    altura_2 = imagem2.getHeight()
    largura = min(largura_1, largura_2)
    altura = min(altura_1, altura_2)

    nova_imagem = cImage.EmptyImage(largura, altura)

    for coluna in range(largura):
        for linha in range(altura):
            pix1 = imagem1.getPixel(coluna, linha)
            pix2 = imagem2.getPixel(coluna, linha)

            novo_pixel = combina_pixel(pix1, pix2, funcao)

            nova_imagem.setPixel(coluna, linha, novo_pixel)

    return nova_imagem