Esempio n. 1
0
def parseColorSchemes(fileName):
    df = pandas.read_csv(fileName,
                         usecols=["schemeLabel", "maskLabel", "r", "g", "b"],
                         dtype={
                             "schemeLabel": "str",
                             "maskLabel": "str",
                             "r": "int",
                             "g": "int",
                             "b": "int"
                         })
    numRows = len(df)

    myDict = dict()
    for index in range(numRows):
        schemeLabel = df.iloc[index]['schemeLabel']
        maskLabel = df.iloc[index]['maskLabel']
        pixel = Pixel.Pixel(df.iloc[index]['r'], df.iloc[index]['g'],
                            df.iloc[index]['b'], "RGB")

        if schemeLabel not in myDict.keys():
            myDict[schemeLabel] = ColorScheme.ColorScheme(schemeLabel)
        myDict[schemeLabel].addLabelPixel(maskLabel, pixel)

    colorSchemes = []
    for value in myDict.values():
        colorSchemes.append(value)
    return colorSchemes
Esempio n. 2
0
def main():
    pl = []
    p1 = Pixel.Pixel(0, 0, 0)
    p2 = Pixel.Pixel(0, 0, 0)
    p3 = Pixel.Pixel(0, 0, 0)
    p4 = Pixel.Pixel(31, 57, 219)
    p5 = Pixel.Pixel(31, 57, 219)
    p6 = Pixel.Pixel(31, 57, 219)
    p7 = Pixel.Pixel(0, 0, 0)
    p8 = Pixel.Pixel(0, 0, 0)
    p9 = Pixel.Pixel(0, 0, 0)
    p10 = Pixel.Pixel(255, 255, 255)
    pl.extend([p1, p2, p3, p4, p5, p6, p7, p8, p9, p10])
    k = Kernel(pl)
    print k.__dict__
    return k
Esempio n. 3
0
    def create_pixel_array(self, img):
        pixels = []
        for line in range(0, self.height):
            for column in range(0, self.width):
                pixel = Pixel.Pixel(line, column,
                                    True if img[line][column] == 1 else False)
                pixels.append(pixel)

        return pixels
 def setKernelsandRGB(self, show=False):
     '''
     For each entry in self.cobs, it will open the file with that name in repDirectory.
     The file is a csv file of the format "accessionName, Kernel, R, G, B". This function will return a list of
     ints that correspond to the number of kernels that are associated with the Cob file.
     '''
     print "Creating Kernels and Pixels"
     progressBar = 0
     for key in self.cobs:
         progressBar += 1
         kernelList = []
         filePath = self.repDirectory + "/" + key + ".tif.csv"
         with open(filePath) as csvFile:
             csvReader = csv.reader(csvFile)
             csvList = list(csvReader)
             print "Cob: ", progressBar, "/", len(self.cobs)
             listofpixels = []
             currentKernel = 1
             for line in csvList:
                 try:
                     if line[0] == 'Image':
                         pass
                     elif int(line[1]) != currentKernel and line[4] != '':
                         kernelList.append(
                             Kernel.Kernel(listofpixels,
                                           name=currentKernel))
                         if show == True:
                             print "Kernel: %s" % currentKernel
                         listofpixels = []
                         currentKernel = int(line[1])
                         currentPixel = Pixel.Pixel(int(line[2]),
                                                    int(line[3]),
                                                    int(line[4]))
                         listofpixels.append(currentPixel)
                     elif int(line[1]) == currentKernel:
                         currentPixel = Pixel.Pixel(int(line[2]),
                                                    int(line[3]),
                                                    int(line[4]))
                         listofpixels.append(currentPixel)
                 except:
                     IndexError
         self.cobs[key] = Cob.Cob(kernelList)
         print "Kernel's Initialized for %s" % key
     print "All Cob's Initialized"
Esempio n. 5
0
def color_skin_regions(img_path, save_path):
    image = Image.open(img_path)
    pixels = image.load()
    width = image.size[0]
    height = image.size[1]
    for i in xrange(0, width):
        for j in xrange(0, height):
            pixel = Pixel(i, j, pixels[i,j][0], pixels[i, j][1], pixels[i, j][2])
            if pixel.is_skin():
                pixels[i, j] = (0, 0, 0)
    image.save(save_path)
Esempio n. 6
0
def processing(mode, pix, width, height, draw, image):
    print(str(mode + 1) + ". Image")
    pbar.start()
    for i in range(width):
        for j in range(height):
            pixel = Pixel.Pixel(*pix[i, j])
            draw.point((i, j), (pixel.modeget(mode)))
            pbar.update(i * j)
            del pixel
    image.save("Image" + str(mode + 1) + ".jpg", "JPEG")
    print('')
Esempio n. 7
0
def negative(mode, pix, width, height, draw, image):
    print(str(mode + 1) + ". Negative")
    pbar.start()
    for i in range(width):
        for j in range(height):
            pixel = Pixel.Pixel(*pix[i, j])
            red, green, blue = pixel.modeget(mode)
            draw.point((i, j), (255 - red, 255 - green, 255 - blue))
            pbar.update(i * j)
            del pixel
    image.save("Negative" + str(mode + 1) + ".jpg", "JPEG")
    print('')
Esempio n. 8
0
    def update_pixel_array(self, img):
        for line in range(0, self.height):
            for column in range(0, self.width):
                pixel = Pixel.Pixel(line, column,
                                    True if img[line][column] == 1 else False)
                if pixel not in self.arrayPixelsImage:
                    self.arrayPixelsImage.append(pixel)
                elif pixel in self.arrayPixelsImage:
                    idx = self.arrayPixelsImage.index(pixel)
                    self.arrayPixelsImage[idx] = pixel

        self.arrayPixelsImage.sort(key=lambda k: [k.x, k.y])
 def __init__(self, bitmap, wid, hi):
     self.wid = wid
     self.hi = hi
     result = []
     level = []
     for i in range(wid * hi):
         level.append(
             Pixel(blue=bitmap[i * 3],
                   green=bitmap[i * 3 + 1],
                   red=bitmap[i * 3 + 2]))
         if wid == len(level):
             result.insert(0, level)
             level = []
     self.bitmap = result
Esempio n. 10
0
def processImageRGBA(image: Image, mask: Mask, colorScheme: ColorScheme):
    result = Image.new("RGBA", image.size)

    for x in range(image.size[0]):
        for y in range(image.size[1]):
            p = image.getpixel((x, y))
            p_r, p_g, p_b, p_a = p
            pixel = Pixel.Pixel(p_r, p_g, p_b, "RGB")

            pixelLabel = mask.getLabel(pixel)
            tPixel = colorScheme.getPixel(pixelLabel)
            if pixelLabel != "":
                result.putpixel((x, y), (tPixel.r, tPixel.g, tPixel.b, p_a))
            else:  # if it doesn't map to any known values
                result.putpixel((x, y), p)

    return result
Esempio n. 11
0
def init():
    SCREEN.fill(BLACK)
    pygame.display.update()
    world = []
    for y in range(int(SCREEN_HEIGHT / PIXEL_SIZE)):
        row = []
        for x in range(int(SCREEN_WIDTH / PIXEL_SIZE)):
            pixel = Pixel.Pixel(SCREEN, x, y, PIXEL_SIZE)
            pixel.draw()
            row.append(pixel)
        world.append(row)

    user_pick(world)  # let user pick starting state

    # Draw a glider gun
    # for (y, x) in GLIDER_GUN: world[y][x].color = WHITE

    return world
Esempio n. 12
0
def parse(bitmap, wid, hi):
    """
    Parsing map to list of pixels
    :param bitmap:
    :param wid:
    :param hi:
    :return:
    """
    result = []
    level = []
    for i in range(wid * hi):
        level.append(
            Pixel(blue=bitmap[i * 3],
                  green=bitmap[i * 3 + 1],
                  red=bitmap[i * 3 + 2]))
        if wid == len(level):
            result.insert(0, level)
            level = []
    return result
Esempio n. 13
0
def parseMask(fileName):
    df = pandas.read_csv(fileName,
                         usecols=["label", "r", "g", "b"],
                         dtype={
                             "label": "str",
                             "r": "int",
                             "g": "int",
                             "b": "int"
                         })
    numRows = len(df)

    mask = Mask.Mask()

    for index in range(numRows):
        pixel = Pixel.Pixel(df.iloc[index]['r'], df.iloc[index]['g'],
                            df.iloc[index]['b'], "RGB")
        mask.addPixelLabel(df.iloc[index]['label'], pixel)

    return mask
Esempio n. 14
0
def decode(low_data):
    """
    Decodes image
    :param low_data:
    :return:
    """
    hex_str = low_data.hex()
    bits = "".join([
        "{0:08b}".format(int(hex_str[x:x + 2], base=16))
        for x in range(0, len(hex_str), 2)
    ])
    codes = decode_code(bits)
    differences = [x // 2 if x % 2 == 0 else -(x // 2) for x in codes]
    bitmap = [
        Pixel(int(differences[i + 2]), int(differences[i + 1]),
              int(differences[i])) for i in range(0, len(differences), 3)
    ]
    bitmap = diff_decode(bitmap)
    bitmap = convert_to_list(bitmap)
    return bytes(bitmap)
Esempio n. 15
0
def contains_nudity(image_path):
    image = Image.open(image_path)
    imgPixels = image.load()
    width = image.size[0]
    height = image.size[1]
    pixels = [ [None]*height for i in range(width) ]

    for i in xrange(0, width):
        for j in xrange(0, height):
            pixels[i][j] = Pixel(i, j, imgPixels[i,j][0], imgPixels[i,j][1], imgPixels[i,j][2])
    
    skin_pixels = []
    skin_regions = []
    create_skin_regions(pixels, skin_pixels, skin_regions, width, height)

    if len(skin_regions) < 3:
        return False
    skin_regions.sort(key = operator.attrgetter('size'), reverse=True)

    bounding_region = create_bounding_region(pixels, skin_regions, width, height)
    return analyze_regions(skin_pixels, skin_regions, bounding_region, width, height)
Esempio n. 16
0
def percolate(bitmap, x, y, high=False):
    """
    Filters upper,lower
    :param bitmap:
    :param x:
    :param y:
    :param high:
    :return:
    """
    w1 = [[1, 1, 1], [1, 1, 1], [1, 1, 1]]
    w2 = [[0, -1, 0], [-1, 5, -1], [0, -1, 0]]
    weights = w2 if high else w1
    pixel_org = Pixel(0, 0, 0)
    for i in range(-1, 2):
        for j in range(-1, 2):
            pixel_org += bitmap[x + i, y + j] * weights[i + 1][j + 1]
    weights_sum = sum([sum(level) for level in weights])
    if weights_sum <= 0:
        weights_sum = 1
    pixel_org = pixel_org // weights_sum
    setup_pixel(pixel_org)
    return pixel_org
def stick_pieces(bloc_p, bloc_e, p, e, final_stick=False):
    """
        Stick an edge of a piece to the bloc of already resolved pieces

        :param bloc_p: bloc of pieces already solved
        :param bloc_e: bloc of edges already solved
        :param p: piece to add to the bloc
        :param e: edge to stick
        :return: Nothing
    """
    f = open('./testfile.txt', 'w+')
    vec_bloc = np.subtract(bloc_e.shape[0], bloc_e.shape[-1])
    vec_piece = np.subtract(e.shape[0], e.shape[-1])

    translation = np.subtract(bloc_e.shape[0], e.shape[-1])
    angle = angle_between((vec_bloc[0], vec_bloc[1], 0),
                          (-vec_piece[0], -vec_piece[1], 0))

    # file = open('coords.txt','w+')

    # file.write(str(angle) + '\n')
    # file.close()

    # First move the first corner of piece to the corner of bloc edge
    for edge in p.edges_:
        edge.shape += translation

    # Then rotate piece of `angle` degrees centered on the corner
    for edge in p.edges_:
        for i, point in enumerate(edge.shape):
            edge.shape[i] = rotate(bloc_e.shape[0], point, -angle)

    if final_stick:
        #prev bounding box
        minX, minY, maxX, maxY = float('inf'), float(
            'inf'), -float('inf'), -float('inf')
        for i, pixel in enumerate(p.img_piece_):
            x, y = p.img_piece_[i].translate(translation[1], translation[0])
            minX, minY, maxX, maxY = min(minX,
                                         x), min(minY,
                                                 y), max(maxX,
                                                         x), max(maxY, y)
            # pixel.rotate(bloc_e.shape[0], -angle)

        #rotation center
        img_p = np.full((maxX - minX + 1, maxY - minY + 1, 3), -1)
        for pix in p.img_piece_:
            x, y = pix.pos
            x, y = x - minX, y - minY
            img_p[x, y] = pix.color

        #new bounding box
        minX2, minY2, maxX2, maxY2 = float('inf'), float(
            'inf'), -float('inf'), -float('inf')
        for x in [minX, maxX]:
            for y in [minY, maxY]:
                x2, y2 = rotate((bloc_e.shape[0][1], bloc_e.shape[0][0]),
                                (x, y), angle)
                x2, y2 = int(x2), int(y2)
                minX2, minY2, maxX2, maxY2 = min(minX2, x2), min(
                    minY2, y2), max(maxX2, x2), max(maxY2, y2)
                f.write(str(x2) + ', ' + str(y2) + '\n')

        pixels = []
        for px in range(minX2, maxX2 + 1):
            for py in range(minY2, maxY2 + 1):
                qx, qy = rotate((bloc_e.shape[0][1], bloc_e.shape[0][0]),
                                (px, py), -angle)
                qx, qy = int(qx), int(qy)
                if minX <= qx <= maxX and minY <= qy <= maxY and img_p[
                        qx - minX, qy - minY][0] != -1:
                    pixels.append(Pixel((px, py), img_p[qx - minX, qy - minY]))

        finalAng = angle * (180 / 3.14159)
        while finalAng > 360:
            finalAng = finalAng - 360
        while finalAng < 0:
            finalAng = finalAng + 360
        # print('Angle:', finalAng)

        file.write(str(finalAng) + '\n')

        p.img_piece_ = pixels
Esempio n. 18
0
 def getPixel(self, label: str):
     if label in self.__labelPixelDict:
         return self.__labelPixelDict[label]
     return Pixel.Pixel(255,0,255,"RGB")
Esempio n. 19
0
def main():
    IMAGE_NAME = sys.argv[1]

    pixel = Pixel.Pixel(0, 0, 0)
    modsquantity = pixel.getmodsquantity()

    selectedmods = []

    print("Available modes:", modsquantity)

    wrongoption = True
    while (wrongoption):
        print("-p, -P \t Positive mods;")
        print("-n, -N \t Negative mods;")
        print("-a, -A \t All mods;")
        global administration
        administration = list(input("Select mods: ").split(" "))
        select = administration[:-1]
        print(administration)
        if len(select) == 1:
            select = select[0]
            print(select)
            if select.startswith("-"):
                modenumber = select[1:]
                if modenumber.isdigit():
                    selectedmods = list(range(int(modenumber) - 1))
                    wrongoption = False
                else:
                    print('Wrong option 1')
            elif select.endswith("-"):
                modenumber = select[:-1]
                if modenumber.isdigit():
                    selectedmods = list(
                        range(int(modenumber) - 1, modsquantity))
                    wrongoption = False
                else:
                    print('Wrong option 2')
            elif select.find('-') != -1:
                try:
                    modenumber = list(map(int, select.split("-")))
                    selectedmods = list(range(modenumber[0] - 1,
                                              modenumber[1]))
                    wrongoption = False
                except:
                    print('Wrong option 3')
            else:
                selectedmods.append(int(select) - 1)
                wrongoption = False
        else:
            selectedmods = list(map(int, select))
            #try:
            for i in range(len(selectedmods)):
                selectedmods[i] = selectedmods[i] - 1
            wrongoption = False
            #except:
            #    print('Wrong option 4')
        print(
            '----------------------------------------------------------------')

    del pixel

    for mode in selectedmods:
        image = Image.open(IMAGE_NAME)

        draw = ImageDraw.Draw(image)
        width = image.size[0]
        height = image.size[1]

        global pbar
        pbar = ProgressBar(maxval=width * height)

        pix = image.load()

        if administration[-1] == '-p' or administration[-1] == '-P':
            processing(mode=mode,
                       pix=pix,
                       width=width,
                       height=height,
                       draw=draw,
                       image=image)
        elif administration[-1] == '-n' or administration[-1] == '-N':
            negative(mode=mode,
                     pix=pix,
                     width=width,
                     height=height,
                     draw=draw,
                     image=image)
        elif administration[-1] == '-a' or administration[-1] == '-A':
            processing(mode=mode,
                       pix=pix,
                       width=width,
                       height=height,
                       draw=draw,
                       image=image)
            negative(mode=mode,
                     pix=pix,
                     width=width,
                     height=height,
                     draw=draw,
                     image=image)

        print('')