示例#1
0
 def draw_histogram(self, y):
     his = self.pimg.histogram()
     h2 = list(his)
     h2.sort()
     h2 = h2[-1]
     red = his[0:256]
     green = his[256:512]
     blue = his[512:768]
     self.rgbHistogram = Image.new('RGB', (256, 3 * y + 60),
                                   (255, 255, 255))
     self.rgbHistogramDraw = ImageDraw2.Draw(self.rgbHistogram)
     PosY = y
     for i in range(len(red)):
         self.rgbHistogramDraw.line(
             ((i, PosY), (i, PosY - (red[i] * y) / h2)),
             ImageDraw2.Pen("red"))
     PosY += 70
     for i in range(len(green)):
         self.rgbHistogramDraw.line(
             ((i, PosY), (i, PosY - (green[i] * y) / h2)),
             ImageDraw2.Pen("green"))
     PosY += 70
     for i in range(len(blue)):
         self.rgbHistogramDraw.line(
             ((i, PosY), (i, PosY - (blue[i] * y) / h2)),
             ImageDraw2.Pen("blue"))
     self.rgbHistogram.save("Histogram.jpg")
     self.Histogram = ImageTk.PhotoImage(image=self.rgbHistogram)
     self.cvHistogram.create_image(0, 0, image=self.Histogram, anchor=NW)
     self.cvHistogram.configure(width=self.rgbHistogram.size[0],
                                height=self.rgbHistogram.size[1])
 def _draw_joints(self, image, node: Node):
     canvas = ImageDraw2.Draw(image)
     brush = ImageDraw2.Brush("red", 125)
     pos = node.position
     canvas.ellipse(
         (pos[0] - 3.5, pos[1] - 3.5, pos[0] + 3.5, pos[1] + 3.5), None,
         brush)
     canvas.flush()
     for child in node.children:
         self._draw_joints(image, child)
示例#3
0
def test_sanity():
    im = hopper("RGB").copy()

    draw = ImageDraw2.Draw(im)
    pen = ImageDraw2.Pen("blue", width=7)
    draw.line(list(range(10)), pen)

    draw, handler = ImageDraw.getdraw(im)
    pen = ImageDraw2.Pen("blue", width=7)
    draw.line(list(range(10)), pen)
示例#4
0
def helper_line(points):
    # Arrange
    im = Image.new("RGB", (W, H))
    draw = ImageDraw2.Draw(im)
    pen = ImageDraw2.Pen("yellow", width=2)

    # Act
    draw.line(points, pen)

    # Assert
    assert_image_equal_tofile(im, "Tests/images/imagedraw_line.png")
 def draw_sign(self):
     face_coordinate = self.calculate_coordinate()
     image = Image.open(self.path)
     draw = ImageDraw2.Draw(image)
     pen = ImageDraw2.Pen('red', 1.0,)
     draw.rectangle(face_coordinate[0], pen)
     draw.rectangle(face_coordinate[1], pen)
     draw.rectangle(face_coordinate[2], pen)
     image.save('code.jpg', 'jpeg')
     self.img_label.setPixmap(QPixmap('code.jpg'))
     self.info_label.setText(self.information)
示例#6
0
def test_textsize():
    # Arrange
    im = Image.new("RGB", (W, H))
    draw = ImageDraw2.Draw(im)
    font = ImageDraw2.Font("white", FONT_PATH)

    # Act
    size = draw.textsize("ImageDraw2", font)

    # Assert
    assert size[1] == 12
示例#7
0
def helper_rectangle(bbox):
    # Arrange
    im = Image.new("RGB", (W, H))
    draw = ImageDraw2.Draw(im)
    pen = ImageDraw2.Pen("green", width=2)
    brush = ImageDraw2.Brush("black")

    # Act
    draw.rectangle(bbox, pen, brush)

    # Assert
    assert_image_equal_tofile(im, "Tests/images/imagedraw_rectangle.png")
    def test_ellipse_edge(self):
        # Arrange
        im = Image.new("RGB", (W, H))
        draw = ImageDraw2.Draw(im)
        brush = ImageDraw2.Brush("white")

        # Act
        draw.ellipse(((0, 0), (W-1, H)), brush)

        # Assert
        self.assert_image_similar(
            im, Image.open("Tests/images/imagedraw_ellipse_edge.png"), 1)
示例#9
0
def test_textsize_empty_string():
    # Arrange
    im = Image.new("RGB", (W, H))
    draw = ImageDraw2.Draw(im)
    font = ImageDraw2.Font("white", FONT_PATH)

    # Act
    # Should not cause 'SystemError: <built-in method getsize of
    # ImagingFont object at 0x...> returned NULL without setting an error'
    draw.textsize("", font)
    draw.textsize("\n", font)
    draw.textsize("test\n", font)
示例#10
0
def test_text():
    # Arrange
    im = Image.new("RGB", (W, H))
    draw = ImageDraw2.Draw(im)
    font = ImageDraw2.Font("white", FONT_PATH)
    expected = "Tests/images/imagedraw2_text.png"

    # Act
    draw.text((5, 5), "ImageDraw2", font)

    # Assert
    assert_image_similar_tofile(im, expected, 13)
示例#11
0
def draw_area_annotations(img, landmarks):
    draw = ImageDraw2.Draw(img)
    pen = ImageDraw2.Pen("blue", width=50)
    draw.polygon(landmarks, pen)
    extremes_points = get_extremes_points(landmarks)
    right_most = extremes_points[1]
    pt1, pt2 = convert_landmark_to_line_coordination(landmarks)
    draw = ImageDraw.Draw(img)
    draw.text((right_most[0] + 20, right_most[1]),
              text=f"{round(distance(pt1, pt2)/10, 2)}cm",
              fill="blue")
    return img
示例#12
0
def test_ellipse_edge():
    # Arrange
    im = Image.new("RGB", (W, H))
    draw = ImageDraw2.Draw(im)
    brush = ImageDraw2.Brush("white")

    # Act
    draw.ellipse(((0, 0), (W - 1, H - 1)), brush)

    # Assert
    assert_image_similar_tofile(im, "Tests/images/imagedraw_ellipse_edge.png",
                                1)
示例#13
0
    def test_text(self):
        # Arrange
        im = Image.new("RGB", (W, H))
        draw = ImageDraw2.Draw(im)
        font = ImageDraw2.Font("white", FONT_PATH)
        expected = "Tests/images/imagedraw2_text.png"

        # Act
        draw.text((5, 5), "ImageDraw2", font)

        # Assert
        self.assert_image_similar(im, Image.open(expected), 13)
示例#14
0
def helper_polygon(points):
    # Arrange
    im = Image.new("RGB", (W, H))
    draw = ImageDraw2.Draw(im)
    pen = ImageDraw2.Pen("blue", width=2)
    brush = ImageDraw2.Brush("red")

    # Act
    draw.polygon(points, pen, brush)

    # Assert
    assert_image_equal_tofile(im, "Tests/images/imagedraw_polygon.png")
示例#15
0
def test_flush():
    # Arrange
    im = Image.new("RGB", (W, H))
    draw = ImageDraw2.Draw(im)
    font = ImageDraw2.Font("white", FONT_PATH)

    # Act
    draw.text((5, 5), "ImageDraw2", font)
    im2 = draw.flush()

    # Assert
    assert_image_equal(im, im2)
示例#16
0
def helper_ellipse(mode, bbox):
    # Arrange
    im = Image.new("RGB", (W, H))
    draw = ImageDraw2.Draw(im)
    pen = ImageDraw2.Pen("blue", width=2)
    brush = ImageDraw2.Brush("green")
    expected = f"Tests/images/imagedraw_ellipse_{mode}.png"

    # Act
    draw.ellipse(bbox, pen, brush)

    # Assert
    assert_image_similar_tofile(im, expected, 1)
示例#17
0
def test_line_pen_as_brush():
    # Arrange
    im = Image.new("RGB", (W, H))
    draw = ImageDraw2.Draw(im)
    pen = None
    brush = ImageDraw2.Pen("yellow", width=2)

    # Act
    # Pass in the pen as the brush parameter
    draw.line(POINTS1, pen, brush)

    # Assert
    assert_image_equal_tofile(im, "Tests/images/imagedraw_line.png")
示例#18
0
    def helper_ellipse(self, mode, bbox):
        # Arrange
        im = Image.new("RGB", (W, H))
        draw = ImageDraw2.Draw(im)
        pen = ImageDraw2.Pen("blue", width=2)
        brush = ImageDraw2.Brush("green")
        expected = "Tests/images/imagedraw_ellipse_{}.png".format(mode)

        # Act
        draw.ellipse(bbox, pen, brush)

        # Assert
        self.assert_image_similar(im, Image.open(expected), 1)
示例#19
0
    def drawText(self, off_x, off_y, text, w, h):
        font = ImageDraw2.Font("yellow", "Resources/monkey.otf", h)
        img = Image.new("RGB", (w, h), (0, 0, 0))
        draw = ImageDraw2.Draw(img)
        draw.text((0, -3 * h / 10), text, font)  # -12
        #img_flip = img.transpose(Image.FLIP_TOP_BOTTOM)
        #img.show()

        self.text_pBits = img.tobytes("raw", "RGB")

        gl.glBindTexture(gl.GL_TEXTURE_2D, self.texture_1)
        gl.glTexSubImage2D(gl.GL_TEXTURE_2D, 0, off_x, off_y, w, h, gl.GL_RGB,
                           gl.GL_UNSIGNED_BYTE, self.text_pBits)
        gl.glBindTexture(gl.GL_TEXTURE_2D, 0)
示例#20
0
def test_big_rectangle():
    # Test drawing a rectangle bigger than the image
    # Arrange
    im = Image.new("RGB", (W, H))
    bbox = [(-1, -1), (W + 1, H + 1)]
    brush = ImageDraw2.Brush("orange")
    draw = ImageDraw2.Draw(im)
    expected = "Tests/images/imagedraw_big_rectangle.png"

    # Act
    draw.rectangle(bbox, brush)

    # Assert
    assert_image_similar_tofile(im, expected, 1)
示例#21
0
def detectTextOnImage(imagePath, imageName, data):
    """
        draw line to the image based on the x and y coordinates from JSON
    """
    im = Image.open(imagePath + imageName)
    d = ImageDraw2.Draw(im)
    pen = ImageDraw2.Pen(color="red")

    for j in data:
        x = j["x_coordinates"].replace("[", "").replace("]", "").split(",")
        y = j["y_coordinates"].replace("[", "").replace("]", "").split(",")
        #LB, LT, RT, RB = (c[0]["x"], c[0]["y"]), (c[1]["x"], c[1]["y"]), (c[2]["x"], c[2]["y"]), (c[3]["x"], c[3]["y"])
        LB, LT, RT, RB = (int(y[0]), int(x[0])), (int(y[1]), int(x[1])), (int(
            y[2]), int(x[2])), (int(y[3]), int(x[3]))
        d.line([LB, LT, RT, RB, LB], pen)  #red line
    im.save(imagePath + "ocred_" + imageName)
    print("image saved")
示例#22
0
 def draw(self, image):
     self._calculate_points()
     canvas = ImageDraw2.Draw(image)
     pen = ImageDraw2.Pen("blue", width=7, opacity=125)
     pen2 = ImageDraw2.Pen("red", width=7, opacity=125)
     brush = ImageDraw2.Brush("blue", 125)
     pos_1 = self.position[Part.POSITION]
     pos_2 = self.position[Part.TORSO]
     canvas.line(pos_1 + pos_2, pen)
     pos_1 = self.position[Part.POSITION]
     pos_2 = self.position[Part.UPPER_LEG_1]
     canvas.line(pos_1 + pos_2, pen2)
     pos_1 = self.position[Part.UPPER_LEG_1]
     pos_2 = self.position[Part.LOWER_LEG_1]
     canvas.line(pos_1 + pos_2, pen2)
     pos_1 = self.position[Part.POSITION]
     pos_2 = self.position[Part.UPPER_LEG_2]
     canvas.line(pos_1 + pos_2, pen)
     pos_1 = self.position[Part.UPPER_LEG_2]
     pos_2 = self.position[Part.LOWER_LEG_2]
     canvas.line(pos_1 + pos_2, pen)
     pos_1 = self.position[Part.TORSO]
     pos_2 = self.position[Part.UPPER_ARM_1]
     canvas.line(pos_1 + pos_2, pen2)
     pos_1 = self.position[Part.UPPER_ARM_1]
     pos_2 = self.position[Part.LOWER_ARM_1]
     canvas.line(pos_1 + pos_2, pen2)
     pos_1 = self.position[Part.TORSO]
     pos_2 = self.position[Part.UPPER_ARM_2]
     canvas.line(pos_1 + pos_2, pen)
     pos_1 = self.position[Part.UPPER_ARM_2]
     pos_2 = self.position[Part.LOWER_ARM_2]
     canvas.line(pos_1 + pos_2, pen)
     for part in Part:
         pos = self.position[part]
         if part == Part.HEAD:
             r = self.radius_head
             brush = ImageDraw2.Brush("blue", 125)
             canvas.ellipse((pos[0] - r, pos[1] - r, pos[0] + r, pos[1] + r), pen, brush)
         else:
             brush = ImageDraw2.Brush("red", 125)
             canvas.ellipse((pos[0] - 3.5, pos[1] - 3.5, pos[0] + 3.5, pos[1] + 3.5), None, brush)
     canvas.flush()
 def _draw_sticks(self, image, node: Node, shadow=False):
     canvas = ImageDraw2.Draw(image)
     if shadow:
         color = "grey"
     else:
         color = "blue" if node.attributes is None else node.attributes.color
     pen = ImageDraw2.Pen(color, width=7, opacity=125)
     brush = ImageDraw2.Brush(color, 125)
     if node.attributes is None or not node.attributes.circle:
         canvas.line(node.parent.position + node.position, pen)
     else:
         pos = ((node.position[0] + node.parent.position[0]) / 2,
                (node.position[1] + node.parent.position[1]) / 2)
         r = math.sqrt((node.position[0] - node.parent.position[0])**2 +
                       (node.position[1] - node.parent.position[1])**2) / 2
         canvas.ellipse((pos[0] - r, pos[1] - r, pos[0] + r, pos[1] + r),
                        pen, brush)
     canvas.flush()
     for child in node.children:
         self._draw_sticks(image, child, shadow)
示例#24
0
img_folder = '../clear_merged_test'
save_dir = img_folder+'_vis'
if not os.path.exists(save_dir):
    os.mkdir(save_dir)
flag=1
for line in open('./submit.csv'):
    if flag:
        flag=0
        continue
    id,x1,y1,x2,y2,x3,y3,havestar=line.strip().split(',')
    x1,y1,x2,y2,x3,y3 = int(x1),int(y1),int(x2),int(y2),int(x3),int(y3)
    # print(id,x1,y1,x2,y2,x3,y3,havestar) # 7f0cf4a6262372bb93077e1611ddfd0b 149 124 134 84 150 195 0
    img = os.path.join(img_folder,id+'.jpg')
    img = Image.open(img)
    draw = ImageDraw2.Draw(img)
    pen = ImageDraw2.Pen('white')
    font = ImageDraw2.Font(color='white',file='./micross.ttf')
    x1_min=x1-10
    x1_max=x1+10
    y1_min=y1-10
    y1_max=y1+10
    x2_min=x2-10 
    x2_max=x2+10
    y2_min=y2-10
    y2_max=y2+10
    x3_min=x3-10
    x3_max=x3+10
    y3_min=y3-10
    y3_max=y3+10
    draw.line([(x1_min,y1_min),(x1_max,y1_min),(x1_max,y1_max),(x1_min,y1_max),(x1_min,y1_min)],pen)
示例#25
0
 def rcirc(self, image, x, y, r, color="red"):
     Drawner = ImageDraw2.Draw(image)
     Drawner.ellipse(((x - 1 - r, y - 1 - r), (x + r + 1, y + r + 1)),
                     ImageDraw2.Pen("red"))
     Drawner.ellipse(((x - r, y - r), (x + r, y + r)),
                     ImageDraw2.Pen("red"))