Hướng dẫn draw shape on image python - vẽ hình trên hình ảnh con trăn

Show

Gối cung cấp một mô -đun bản vẽ có tên

# draw_line.py

import random
from PIL import Image, ImageDraw


def line(image_path, output_path):
    image = Image.open(image_path)
    draw = ImageDraw.Draw(image)
    colors = ["red", "green", "blue", "yellow",
              "purple", "orange"]

    for i in range(0, 100, 20):
        draw.line((i, 0) + image.size, width=5, 
                  fill=random.choice(colors))

    image.save(output_path)

if __name__ == "__main__":
    line("madison_county_bridge_2.jpg", "lines.jpg")
5 mà bạn có thể sử dụng để tạo đồ họa 2D đơn giản trên các đối tượng
# draw_line.py

import random
from PIL import Image, ImageDraw


def line(image_path, output_path):
    image = Image.open(image_path)
    draw = ImageDraw.Draw(image)
    colors = ["red", "green", "blue", "yellow",
              "purple", "orange"]

    for i in range(0, 100, 20):
        draw.line((i, 0) + image.size, width=5, 
                  fill=random.choice(colors))

    image.save(output_path)

if __name__ == "__main__":
    line("madison_county_bridge_2.jpg", "lines.jpg")
6 của bạn. Theo tài liệu của Pillow, "Bạn có thể sử dụng mô -đun này để tạo hình ảnh mới, chú thích hoặc chỉnh sửa hình ảnh hiện có và để tạo đồ họa khi bay để sử dụng web."

Nếu bạn cần khả năng vẽ tiên tiến hơn so với những gì được bao gồm trong Gối, bạn có thể nhận được một gói riêng gọi là AGGDRAW.aggdraw.

Bạn sẽ tập trung vào những gì đi kèm với gối trong bài viết này. Cụ thể, bạn sẽ tìm hiểu về những điều sau đây:

  • Tham số chung
  • Dòng vẽ
  • Vẽ vòng cung
  • Hợp âm vẽ
  • Vẽ hình elip
  • Vẽ lát bánh
  • Vẽ đa giác
  • Vẽ hình chữ nhật

Khi vẽ bằng gối, nó sử dụng cùng một hệ tọa độ mà bạn đã sử dụng với phần còn lại của gối. Góc trên bên trái vẫn còn (0,0), ví dụ. Nếu bạn vẽ bên ngoài giới hạn hình ảnh, những pixel đó sẽ bị loại bỏ.

Nếu bạn muốn chỉ định một màu, bạn có thể sử dụng một loạt các số hoặc bộ dữ liệu như bạn muốn khi sử dụng

# draw_line.py

import random
from PIL import Image, ImageDraw


def line(image_path, output_path):
    image = Image.open(image_path)
    draw = ImageDraw.Draw(image)
    colors = ["red", "green", "blue", "yellow",
              "purple", "orange"]

    for i in range(0, 100, 20):
        draw.line((i, 0) + image.size, width=5, 
                  fill=random.choice(colors))

    image.save(output_path)

if __name__ == "__main__":
    line("madison_county_bridge_2.jpg", "lines.jpg")
7. Đối với các hình ảnh của 1 1, và các hình ảnh của tôi, sử dụng số nguyên. Đối với các hình ảnh của RGB RGB, hãy sử dụng 3-tuple chứa các giá trị số nguyên. Bạn cũng có thể sử dụng các tên màu được hỗ trợ bởi Gối mà bạn đã học trong Chương 2.chapter 2.

Tham số chung

Dòng vẽ

Vẽ vòng cung

Hợp âm vẽ

  • Vẽ hình elip
  • Vẽ lát bánh

Vẽ đa giác

  • # draw_line.py
    
    import random
    from PIL import Image, ImageDraw
    
    
    def line(image_path, output_path):
        image = Image.open(image_path)
        draw = ImageDraw.Draw(image)
        colors = ["red", "green", "blue", "yellow",
                  "purple", "orange"]
    
        for i in range(0, 100, 20):
            draw.line((i, 0) + image.size, width=5, 
                      fill=random.choice(colors))
    
        image.save(output_path)
    
    if __name__ == "__main__":
        line("madison_county_bridge_2.jpg", "lines.jpg")
    9
  • # draw_jointed_line.py
    
    from PIL import Image, ImageDraw
    
    
    def line(output_path):
        image = Image.new("RGB", (400, 400), "red")
        points = [(100, 100), (150, 200), (200, 50), (400, 400)]
        draw = ImageDraw.Draw(image)
        draw.line(points, width=15, fill="green", joint="curve")
        image.save(output_path)
    
    if __name__ == "__main__":
        line("jointed_lines.jpg")
    0

Vẽ hình chữ nhật

Khi vẽ bằng gối, nó sử dụng cùng một hệ tọa độ mà bạn đã sử dụng với phần còn lại của gối. Góc trên bên trái vẫn còn (0,0), ví dụ. Nếu bạn vẽ bên ngoài giới hạn hình ảnh, những pixel đó sẽ bị loại bỏ.

Nếu bạn muốn chỉ định một màu, bạn có thể sử dụng một loạt các số hoặc bộ dữ liệu như bạn muốn khi sử dụng

# draw_line.py

import random
from PIL import Image, ImageDraw


def line(image_path, output_path):
    image = Image.open(image_path)
    draw = ImageDraw.Draw(image)
    colors = ["red", "green", "blue", "yellow",
              "purple", "orange"]

    for i in range(0, 100, 20):
        draw.line((i, 0) + image.size, width=5, 
                  fill=random.choice(colors))

    image.save(output_path)

if __name__ == "__main__":
    line("madison_county_bridge_2.jpg", "lines.jpg")
7. Đối với các hình ảnh của 1 1, và các hình ảnh của tôi, sử dụng số nguyên. Đối với các hình ảnh của RGB RGB, hãy sử dụng 3-tuple chứa các giá trị số nguyên. Bạn cũng có thể sử dụng các tên màu được hỗ trợ bởi Gối mà bạn đã học trong Chương 2.

  • Khi bạn sử dụng các phương pháp vẽ khác nhau, bạn sẽ phát hiện ra rằng chúng có rất nhiều thông số chung mà họ chia sẻ. Thay vì giải thích các tham số tương tự trong mỗi phần, bạn sẽ tìm hiểu về chúng trước!
  • XY

Hầu hết các phương pháp vẽ có tham số

# draw_line.py

import random
from PIL import Image, ImageDraw


def line(image_path, output_path):
    image = Image.open(image_path)
    draw = ImageDraw.Draw(image)
    colors = ["red", "green", "blue", "yellow",
              "purple", "orange"]

    for i in range(0, 100, 20):
        draw.line((i, 0) + image.size, width=5, 
                  fill=random.choice(colors))

    image.save(output_path)

if __name__ == "__main__":
    line("madison_county_bridge_2.jpg", "lines.jpg")
8 đặt diện tích hình chữ nhật để vẽ một hình. Điều này có thể được định nghĩa theo hai cách sau:

((phía trên bên trái x, trên bên trái y), (dưới x bên phải, dưới bên phải y)) hoặc đơn giản ((x1, y1), (x2, y2))

Một bộ hộp của (x1, y1, x2, y2)

Khi nói đến việc vẽ một dòng, đa giác hoặc điểm, nhiều tọa độ được chỉ định theo một trong những cách này:

Phương pháp

# draw_jointed_line.py

from PIL import Image, ImageDraw


def line(output_path):
    image = Image.new("RGB", (400, 400), "red")
    points = [(100, 100), (150, 200), (200, 50), (400, 400)]
    draw = ImageDraw.Draw(image)
    draw.line(points, width=15, fill="green", joint="curve")
    image.save(output_path)

if __name__ == "__main__":
    line("jointed_lines.jpg")
1 sẽ vẽ một đường thẳng, kết nối từng điểm.
# draw_jointed_line.py

from PIL import Image, ImageDraw


def line(output_path):
    image = Image.new("RGB", (400, 400), "red")
    points = [(100, 100), (150, 200), (200, 50), (400, 400)]
    draw = ImageDraw.Draw(image)
    draw.line(points, width=15, fill="green", joint="curve")
    image.save(output_path)

if __name__ == "__main__":
    line("jointed_lines.jpg")
2 sẽ vẽ một đa giác trong đó mỗi điểm được kết nối. Cuối cùng,
# draw_jointed_line.py

from PIL import Image, ImageDraw


def line(output_path):
    image = Image.new("RGB", (400, 400), "red")
    points = [(100, 100), (150, 200), (200, 50), (400, 400)]
    draw = ImageDraw.Draw(image)
    draw.line(points, width=15, fill="green", joint="curve")
    image.save(output_path)

if __name__ == "__main__":
    line("jointed_lines.jpg")
3 sẽ vẽ một điểm 1 pixel tại mỗi điểm.

Dòng vẽ

Vẽ vòng cung

Hợp âm vẽ

Vẽ hình elip

Vẽ lát bánh

Vẽ đa giác

Hướng dẫn draw shape on image python - vẽ hình trên hình ảnh con trăn

Vẽ hình chữ nhật

Khi vẽ bằng gối, nó sử dụng cùng một hệ tọa độ mà bạn đã sử dụng với phần còn lại của gối. Góc trên bên trái vẫn còn (0,0), ví dụ. Nếu bạn vẽ bên ngoài giới hạn hình ảnh, những pixel đó sẽ bị loại bỏ.

# draw_line.py

import random
from PIL import Image, ImageDraw


def line(image_path, output_path):
    image = Image.open(image_path)
    draw = ImageDraw.Draw(image)
    colors = ["red", "green", "blue", "yellow",
              "purple", "orange"]

    for i in range(0, 100, 20):
        draw.line((i, 0) + image.size, width=5, 
                  fill=random.choice(colors))

    image.save(output_path)

if __name__ == "__main__":
    line("madison_county_bridge_2.jpg", "lines.jpg")

Nếu bạn muốn chỉ định một màu, bạn có thể sử dụng một loạt các số hoặc bộ dữ liệu như bạn muốn khi sử dụng

# draw_line.py

import random
from PIL import Image, ImageDraw


def line(image_path, output_path):
    image = Image.open(image_path)
    draw = ImageDraw.Draw(image)
    colors = ["red", "green", "blue", "yellow",
              "purple", "orange"]

    for i in range(0, 100, 20):
        draw.line((i, 0) + image.size, width=5, 
                  fill=random.choice(colors))

    image.save(output_path)

if __name__ == "__main__":
    line("madison_county_bridge_2.jpg", "lines.jpg")
7. Đối với các hình ảnh của 1 1, và các hình ảnh của tôi, sử dụng số nguyên. Đối với các hình ảnh của RGB RGB, hãy sử dụng 3-tuple chứa các giá trị số nguyên. Bạn cũng có thể sử dụng các tên màu được hỗ trợ bởi Gối mà bạn đã học trong Chương 2.

Khi bạn sử dụng các phương pháp vẽ khác nhau, bạn sẽ phát hiện ra rằng chúng có rất nhiều thông số chung mà họ chia sẻ. Thay vì giải thích các tham số tương tự trong mỗi phần, bạn sẽ tìm hiểu về chúng trước!

Hướng dẫn draw shape on image python - vẽ hình trên hình ảnh con trăn

XY

Hầu hết các phương pháp vẽ có tham số

# draw_line.py

import random
from PIL import Image, ImageDraw


def line(image_path, output_path):
    image = Image.open(image_path)
    draw = ImageDraw.Draw(image)
    colors = ["red", "green", "blue", "yellow",
              "purple", "orange"]

    for i in range(0, 100, 20):
        draw.line((i, 0) + image.size, width=5, 
                  fill=random.choice(colors))

    image.save(output_path)

if __name__ == "__main__":
    line("madison_county_bridge_2.jpg", "lines.jpg")
8 đặt diện tích hình chữ nhật để vẽ một hình. Điều này có thể được định nghĩa theo hai cách sau:

# draw_jointed_line.py

from PIL import Image, ImageDraw


def line(output_path):
    image = Image.new("RGB", (400, 400), "red")
    points = [(100, 100), (150, 200), (200, 50), (400, 400)]
    draw = ImageDraw.Draw(image)
    draw.line(points, width=15, fill="green", joint="curve")
    image.save(output_path)

if __name__ == "__main__":
    line("jointed_lines.jpg")

((phía trên bên trái x, trên bên trái y), (dưới x bên phải, dưới bên phải y)) hoặc đơn giản ((x1, y1), (x2, y2))

Khi bạn chạy mã này, hình ảnh của bạn sẽ trông như thế này:

Hướng dẫn draw shape on image python - vẽ hình trên hình ảnh con trăn

Vẽ các dòng nối

Bây giờ hãy thử xóa tham số

def arc(self, xy, start, end, fill=None, width=1):
    """Draw an arc."""
4 khỏi mã của bạn và chạy lại ví dụ. Đầu ra của bạn bây giờ sẽ trông như thế này:

Hướng dẫn draw shape on image python - vẽ hình trên hình ảnh con trăn

Dòng không có khớp

Bằng cách đặt

def arc(self, xy, start, end, fill=None, width=1):
    """Draw an arc."""
4 thành "đường cong", đầu ra sẽ dễ chịu hơn một chút.

Bây giờ bạn đã sẵn sàng để tìm hiểu về việc vẽ vòng cung với gối!

Vẽ vòng cung

Một vòng cung là một đường cong. Bạn cũng có thể vẽ vòng cung với gối. Đây là đặc tả phương thức

# draw_arc.py

from PIL import Image, ImageDraw


def arc(output_path):
    image = Image.new("RGB", (400, 400), "white")
    draw = ImageDraw.Draw(image)
    draw.arc((25, 50, 175, 200), start=30, end=250, fill="green")

    draw.arc((100, 150, 275, 300), start=20, end=100, width=5, 
             fill="yellow")

    image.save(output_path)

if __name__ == "__main__":
    arc("arc.jpg")
7:

def arc(self, xy, start, end, fill=None, width=1):
    """Draw an arc."""

Một

# draw_arc.py

from PIL import Image, ImageDraw


def arc(output_path):
    image = Image.new("RGB", (400, 400), "white")
    draw = ImageDraw.Draw(image)
    draw.arc((25, 50, 175, 200), start=30, end=250, fill="green")

    draw.arc((100, 150, 275, 300), start=20, end=100, width=5, 
             fill="yellow")

    image.save(output_path)

if __name__ == "__main__":
    arc("arc.jpg")
7 cũng có thể được thực hiện bằng cách sử dụng
# draw_line.py

import random
from PIL import Image, ImageDraw


def line(image_path, output_path):
    image = Image.open(image_path)
    draw = ImageDraw.Draw(image)
    colors = ["red", "green", "blue", "yellow",
              "purple", "orange"]

    for i in range(0, 100, 20):
        draw.line((i, 0) + image.size, width=5, 
                  fill=random.choice(colors))

    image.save(output_path)

if __name__ == "__main__":
    line("madison_county_bridge_2.jpg", "lines.jpg")
8 điểm. Tham số
def chord(self, xy, start, end, fill=None, outline=None, width=1):
    """Draw a chord."""
0 xác định góc bắt đầu, tính bằng độ. Tham số
def chord(self, xy, start, end, fill=None, outline=None, width=1):
    """Draw a chord."""
1 cho thấy gối góc kết thúc là gì, cũng ở độ. Hai tham số khác là những tham số đã được giới thiệu.

Để xem cách bạn có thể vẽ một vòng cung, tạo một tệp mới có tên

def chord(self, xy, start, end, fill=None, outline=None, width=1):
    """Draw a chord."""
2 và thêm mã này vào nó:

# draw_arc.py

from PIL import Image, ImageDraw


def arc(output_path):
    image = Image.new("RGB", (400, 400), "white")
    draw = ImageDraw.Draw(image)
    draw.arc((25, 50, 175, 200), start=30, end=250, fill="green")

    draw.arc((100, 150, 275, 300), start=20, end=100, width=5, 
             fill="yellow")

    image.save(output_path)

if __name__ == "__main__":
    arc("arc.jpg")

Trong mã này, bạn tạo một hình ảnh mới với nền trắng. Sau đó, bạn tạo đối tượng

def chord(self, xy, start, end, fill=None, outline=None, width=1):
    """Draw a chord."""
3 của bạn. Tiếp theo, bạn tạo hai cung khác nhau. Vòng cung đầu tiên sẽ được lấp đầy với màu xanh lá cây. Vòng cung thứ hai sẽ được lấp đầy màu vàng, nhưng chiều rộng đường của nó sẽ là 5. Khi bạn vẽ một vòng cung, phần lấp đầy được đề cập đến màu đường của ARC. Bạn không tự lấp đầy vòng cung.

Khi bạn chạy mã này, hình ảnh đầu ra của bạn sẽ trông như thế này:

Hướng dẫn draw shape on image python - vẽ hình trên hình ảnh con trăn

Vẽ vòng cung

Hãy thử thay đổi một số tham số và chạy lại mã để xem cách bạn có thể tự thay đổi vòng cung.

Bây giờ chúng ta hãy tiếp tục và tìm hiểu về bản vẽ hợp âm!

Hợp âm vẽ

Gối cũng hỗ trợ khái niệm hợp âm. Một hợp âm giống như một cung ngoại trừ các điểm cuối được kết nối với một đường thẳng.chords. A chord is the same as an arc except that the endpoints are connected with a straight line.

Dưới đây là định nghĩa phương pháp của

def chord(self, xy, start, end, fill=None, outline=None, width=1):
    """Draw a chord."""
4:

def chord(self, xy, start, end, fill=None, outline=None, width=1):
    """Draw a chord."""

Sự khác biệt duy nhất ở đây là bạn cũng có thể thêm màu

# draw_jointed_line.py

from PIL import Image, ImageDraw


def line(output_path):
    image = Image.new("RGB", (400, 400), "red")
    points = [(100, 100), (150, 200), (200, 50), (400, 400)]
    draw = ImageDraw.Draw(image)
    draw.line(points, width=15, fill="green", joint="curve")
    image.save(output_path)

if __name__ == "__main__":
    line("jointed_lines.jpg")
9. Màu này có thể được chỉ định theo bất kỳ cách nào mà bạn có thể chỉ định màu
# draw_jointed_line.py

from PIL import Image, ImageDraw


def line(output_path):
    image = Image.new("RGB", (400, 400), "red")
    points = [(100, 100), (150, 200), (200, 50), (400, 400)]
    draw = ImageDraw.Draw(image)
    draw.line(points, width=15, fill="green", joint="curve")
    image.save(output_path)

if __name__ == "__main__":
    line("jointed_lines.jpg")
4.

Tạo một tệp mới và đặt tên cho nó

def chord(self, xy, start, end, fill=None, outline=None, width=1):
    """Draw a chord."""
7. Sau đó, thêm mã này để bạn có thể thấy cách bạn tự tạo hợp âm:

# draw_chard.py

from PIL import Image, ImageDraw


def chord(output_path):
    image = Image.new("RGB", (400, 400), "green")
    draw = ImageDraw.Draw(image)
    draw.chord((25, 50, 175, 200), start=30, end=250, fill="red")

    draw.chord((100, 150, 275, 300), start=20, end=100, width=5, fill="yellow",
                outline="blue")

    image.save(output_path)

if __name__ == "__main__":
    chord("chord.jpg")

Ví dụ này sẽ vẽ hai hợp âm trên hình ảnh màu xanh lá cây. Hợp âm đầu tiên được điền vào với một màu đỏ. Hợp âm thứ hai được lấp đầy bằng màu vàng nhưng được phác thảo màu xanh lam. Đường viền màu xanh có chiều rộng 5.

Khi bạn chạy mã này, bạn sẽ tạo hình ảnh sau:

Hướng dẫn draw shape on image python - vẽ hình trên hình ảnh con trăn

Hợp âm vẽ

Trông có vẻ khá tốt. Hãy tiếp tục và chơi xung quanh với ví dụ này quá. Bạn sẽ sớm tạo ra hợp âm với gối với một chút luyện tập.

Bây giờ chúng ta hãy tiếp tục và tìm hiểu về việc vẽ hình elip!

Vẽ hình elip

Một hình elip, hoặc hình bầu dục, được vẽ trong gối bằng cách cho nó một hộp giới hạn (XY). Bạn đã thấy điều này vài lần khác trong các phần trước.

Đây là định nghĩa phương thức

def chord(self, xy, start, end, fill=None, outline=None, width=1):
    """Draw a chord."""
8:

def ellipse(self, xy, fill=None, outline=None, width=1):
    """Draw an ellipse."""

def chord(self, xy, start, end, fill=None, outline=None, width=1):
    """Draw a chord."""
8 cho phép bạn lấp đầy nó bằng một màu, thêm một đường viền màu (
# draw_jointed_line.py

from PIL import Image, ImageDraw


def line(output_path):
    image = Image.new("RGB", (400, 400), "red")
    points = [(100, 100), (150, 200), (200, 50), (400, 400)]
    draw = ImageDraw.Draw(image)
    draw.line(points, width=15, fill="green", joint="curve")
    image.save(output_path)

if __name__ == "__main__":
    line("jointed_lines.jpg")
9) và thay đổi
def arc(self, xy, start, end, fill=None, width=1):
    """Draw an arc."""
3 của
# draw_jointed_line.py

from PIL import Image, ImageDraw


def line(output_path):
    image = Image.new("RGB", (400, 400), "red")
    points = [(100, 100), (150, 200), (200, 50), (400, 400)]
    draw = ImageDraw.Draw(image)
    draw.line(points, width=15, fill="green", joint="curve")
    image.save(output_path)

if __name__ == "__main__":
    line("jointed_lines.jpg")
9 đó.

Để xem cách bạn có thể tạo một

def chord(self, xy, start, end, fill=None, outline=None, width=1):
    """Draw a chord."""
8, hãy tạo một tệp mới có tên
# draw_chard.py

from PIL import Image, ImageDraw


def chord(output_path):
    image = Image.new("RGB", (400, 400), "green")
    draw = ImageDraw.Draw(image)
    draw.chord((25, 50, 175, 200), start=30, end=250, fill="red")

    draw.chord((100, 150, 275, 300), start=20, end=100, width=5, fill="yellow",
                outline="blue")

    image.save(output_path)

if __name__ == "__main__":
    chord("chord.jpg")
4 và thêm mã này vào nó:

# draw_ellipse.py

from PIL import Image, ImageDraw


def ellipse(output_path):
    image = Image.new("RGB", (400, 400), "white")
    draw = ImageDraw.Draw(image)
    draw.ellipse((25, 50, 175, 200), fill="red")

    draw.ellipse((100, 150, 275, 300), outline="black", width=5,
                 fill="yellow")

    image.save(output_path)

if __name__ == "__main__":
    ellipse("ellipse.jpg")

Trong mã này, bạn tạo một hình ảnh màu trắng đẹp thông qua phương thức

# draw_chard.py

from PIL import Image, ImageDraw


def chord(output_path):
    image = Image.new("RGB", (400, 400), "green")
    draw = ImageDraw.Draw(image)
    draw.chord((25, 50, 175, 200), start=30, end=250, fill="red")

    draw.chord((100, 150, 275, 300), start=20, end=100, width=5, fill="yellow",
                outline="blue")

    image.save(output_path)

if __name__ == "__main__":
    chord("chord.jpg")
5. Sau đó, bạn vẽ một hình elip màu đỏ trên đầu của nó. Cuối cùng, bạn vẽ một hình elip thứ hai chứa đầy màu vàng và được phác thảo bằng màu đen trong đó chiều rộng phác thảo được đặt thành 5.

Khi bạn chạy mã này, hình ảnh mà nó tạo sẽ trông như thế này:

Hướng dẫn draw shape on image python - vẽ hình trên hình ảnh con trăn

Vẽ hình elip

Bạn có thể tạo hình bầu dục và vòng tròn bằng cách sử dụng

def chord(self, xy, start, end, fill=None, outline=None, width=1):
    """Draw a chord."""
8. Hãy thử và xem những gì bạn có thể làm với nó.

Bây giờ chúng ta hãy tìm ra cách tạo lát bánh!

Vẽ lát bánh

Một lát bánh giống như

# draw_chard.py

from PIL import Image, ImageDraw


def chord(output_path):
    image = Image.new("RGB", (400, 400), "green")
    draw = ImageDraw.Draw(image)
    draw.chord((25, 50, 175, 200), start=30, end=250, fill="red")

    draw.chord((100, 150, 275, 300), start=20, end=100, width=5, fill="yellow",
                outline="blue")

    image.save(output_path)

if __name__ == "__main__":
    chord("chord.jpg")
7, nhưng cũng vẽ các đường thẳng giữa các điểm cuối và tâm của hộp giới hạn.

Đây là cách định nghĩa phương thức

# draw_chard.py

from PIL import Image, ImageDraw


def chord(output_path):
    image = Image.new("RGB", (400, 400), "green")
    draw = ImageDraw.Draw(image)
    draw.chord((25, 50, 175, 200), start=30, end=250, fill="red")

    draw.chord((100, 150, 275, 300), start=20, end=100, width=5, fill="yellow",
                outline="blue")

    image.save(output_path)

if __name__ == "__main__":
    chord("chord.jpg")
8:

def pieslice(self, xy, start, end, fill=None, outline=None, width=1):
    """Draw a pieslice."""

Bạn đã sử dụng tất cả các tham số này trong các bản vẽ khác. Để xem xét,

# draw_jointed_line.py

from PIL import Image, ImageDraw


def line(output_path):
    image = Image.new("RGB", (400, 400), "red")
    points = [(100, 100), (150, 200), (200, 50), (400, 400)]
    draw = ImageDraw.Draw(image)
    draw.line(points, width=15, fill="green", joint="curve")
    image.save(output_path)

if __name__ == "__main__":
    line("jointed_lines.jpg")
4 thêm màu vào bên trong
# draw_chard.py

from PIL import Image, ImageDraw


def chord(output_path):
    image = Image.new("RGB", (400, 400), "green")
    draw = ImageDraw.Draw(image)
    draw.chord((25, 50, 175, 200), start=30, end=250, fill="red")

    draw.chord((100, 150, 275, 300), start=20, end=100, width=5, fill="yellow",
                outline="blue")

    image.save(output_path)

if __name__ == "__main__":
    chord("chord.jpg")
8 trong khi
# draw_jointed_line.py

from PIL import Image, ImageDraw


def line(output_path):
    image = Image.new("RGB", (400, 400), "red")
    points = [(100, 100), (150, 200), (200, 50), (400, 400)]
    draw = ImageDraw.Draw(image)
    draw.line(points, width=15, fill="green", joint="curve")
    image.save(output_path)

if __name__ == "__main__":
    line("jointed_lines.jpg")
9 thêm một đường viền màu vào hình.

Để bắt đầu thực hành hình dạng này, hãy tạo một tệp mới có tên

def ellipse(self, xy, fill=None, outline=None, width=1):
    """Draw an ellipse."""
2 và thêm mã này vào tệp của bạn:

# draw_line.py

import random
from PIL import Image, ImageDraw


def line(image_path, output_path):
    image = Image.open(image_path)
    draw = ImageDraw.Draw(image)
    colors = ["red", "green", "blue", "yellow",
              "purple", "orange"]

    for i in range(0, 100, 20):
        draw.line((i, 0) + image.size, width=5, 
                  fill=random.choice(colors))

    image.save(output_path)

if __name__ == "__main__":
    line("madison_county_bridge_2.jpg", "lines.jpg")
0

Trong mã này, bạn tạo ra một hình ảnh màu xám để vẽ. Sau đó, bạn tạo hai lát bánh.

# draw_chard.py

from PIL import Image, ImageDraw


def chord(output_path):
    image = Image.new("RGB", (400, 400), "green")
    draw = ImageDraw.Draw(image)
    draw.chord((25, 50, 175, 200), start=30, end=250, fill="red")

    draw.chord((100, 150, 275, 300), start=20, end=100, width=5, fill="yellow",
                outline="blue")

    image.save(output_path)

if __name__ == "__main__":
    chord("chord.jpg")
8 đầu tiên được lấp đầy bằng màu xanh lá cây. Cái thứ hai không được điền vào, nhưng nó có màu vàng
# draw_jointed_line.py

from PIL import Image, ImageDraw


def line(output_path):
    image = Image.new("RGB", (400, 400), "red")
    points = [(100, 100), (150, 200), (200, 50), (400, 400)]
    draw = ImageDraw.Draw(image)
    draw.line(points, width=15, fill="green", joint="curve")
    image.save(output_path)

if __name__ == "__main__":
    line("jointed_lines.jpg")
9. Lưu ý rằng mỗi
# draw_chard.py

from PIL import Image, ImageDraw


def chord(output_path):
    image = Image.new("RGB", (400, 400), "green")
    draw = ImageDraw.Draw(image)
    draw.chord((25, 50, 175, 200), start=30, end=250, fill="red")

    draw.chord((100, 150, 275, 300), start=20, end=100, width=5, fill="yellow",
                outline="blue")

    image.save(output_path)

if __name__ == "__main__":
    chord("chord.jpg")
8 có mức độ bắt đầu và kết thúc khác nhau.

Khi bạn chạy mã này, bạn sẽ nhận được hình ảnh sau:

Hướng dẫn draw shape on image python - vẽ hình trên hình ảnh con trăn

Vẽ lát bánh

Với một công việc nhỏ, bạn có thể tạo một biểu đồ bánh bằng gối! Bạn nên chơi xung quanh với mã của bạn một chút và thay đổi một số giá trị. Bạn sẽ nhanh chóng học cách làm một số lát bánh đẹp của riêng bạn.

Bây giờ chúng ta hãy tìm hiểu làm thế nào để vẽ đa giác bằng gối!

Vẽ đa giác

Một đa giác là một hình dạng hình học có một số điểm (đỉnh) và số lượng phân đoạn hoặc cạnh bằng nhau. Một hình vuông, tam giác và hình lục giác đều là các loại đa giác. Gối cho phép bạn tạo đa giác của riêng bạn. Tài liệu của Pillow xác định một đa giác như thế này: Đường viền đa giác bao gồm các đường thẳng giữa các tọa độ đã cho, cộng với một đường thẳng giữa tọa độ cuối cùng và đầu tiên.

Dưới đây là định nghĩa mã của phương thức

# draw_jointed_line.py

from PIL import Image, ImageDraw


def line(output_path):
    image = Image.new("RGB", (400, 400), "red")
    points = [(100, 100), (150, 200), (200, 50), (400, 400)]
    draw = ImageDraw.Draw(image)
    draw.line(points, width=15, fill="green", joint="curve")
    image.save(output_path)

if __name__ == "__main__":
    line("jointed_lines.jpg")
2:

# draw_line.py

import random
from PIL import Image, ImageDraw


def line(image_path, output_path):
    image = Image.open(image_path)
    draw = ImageDraw.Draw(image)
    colors = ["red", "green", "blue", "yellow",
              "purple", "orange"]

    for i in range(0, 100, 20):
        draw.line((i, 0) + image.size, width=5, 
                  fill=random.choice(colors))

    image.save(output_path)

if __name__ == "__main__":
    line("madison_county_bridge_2.jpg", "lines.jpg")
1

Tất cả các tham số này nên quen thuộc với bạn bây giờ. Hãy tiếp tục và tạo một tệp Python mới và đặt tên cho nó

def ellipse(self, xy, fill=None, outline=None, width=1):
    """Draw an ellipse."""
7. Sau đó thêm mã này:

# draw_line.py

import random
from PIL import Image, ImageDraw


def line(image_path, output_path):
    image = Image.open(image_path)
    draw = ImageDraw.Draw(image)
    colors = ["red", "green", "blue", "yellow",
              "purple", "orange"]

    for i in range(0, 100, 20):
        draw.line((i, 0) + image.size, width=5, 
                  fill=random.choice(colors))

    image.save(output_path)

if __name__ == "__main__":
    line("madison_county_bridge_2.jpg", "lines.jpg")
2

Mã này sẽ tạo ra một hình ảnh màu xám như ví dụ cuối cùng trong phần trước. Sau đó, nó sẽ tạo ra một đa giác chứa đầy màu xanh lá cây. Sau đó, nó sẽ tạo ra một đa giác thứ hai và phác thảo nó bằng màu vàng mà không cần lấp đầy nó.

Trong cả hai bản vẽ, bạn đang cung cấp ba điểm. Điều đó sẽ tạo ra hai hình tam giác.

Khi bạn chạy mã này, bạn sẽ nhận được đầu ra này:

Hướng dẫn draw shape on image python - vẽ hình trên hình ảnh con trăn

Vẽ đa giác

Hãy thử thay đổi mã bằng cách thêm các điểm bổ sung vào một hoặc nhiều đa giác trong mã trên. Với một chút thực hành, bạn sẽ có thể tạo ra các đa giác phức tạp một cách nhanh chóng với gối.

Vẽ hình chữ nhật

Phương pháp

def ellipse(self, xy, fill=None, outline=None, width=1):
    """Draw an ellipse."""
8 cho phép bạn vẽ một hình chữ nhật hoặc hình vuông bằng gối. Đây là cách
def ellipse(self, xy, fill=None, outline=None, width=1):
    """Draw an ellipse."""
8 được xác định:

# draw_line.py

import random
from PIL import Image, ImageDraw


def line(image_path, output_path):
    image = Image.open(image_path)
    draw = ImageDraw.Draw(image)
    colors = ["red", "green", "blue", "yellow",
              "purple", "orange"]

    for i in range(0, 100, 20):
        draw.line((i, 0) + image.size, width=5, 
                  fill=random.choice(colors))

    image.save(output_path)

if __name__ == "__main__":
    line("madison_county_bridge_2.jpg", "lines.jpg")
3

Bạn có thể vượt qua hai bộ dữ liệu xác định tọa độ bắt đầu và kết thúc để vẽ hình chữ nhật. Hoặc bạn có thể cung cấp bốn tọa độ dưới dạng một bộ hộp (4 mục). Sau đó, bạn có thể thêm một

# draw_jointed_line.py

from PIL import Image, ImageDraw


def line(output_path):
    image = Image.new("RGB", (400, 400), "red")
    points = [(100, 100), (150, 200), (200, 50), (400, 400)]
    draw = ImageDraw.Draw(image)
    draw.line(points, width=15, fill="green", joint="curve")
    image.save(output_path)

if __name__ == "__main__":
    line("jointed_lines.jpg")
9,
# draw_jointed_line.py

from PIL import Image, ImageDraw


def line(output_path):
    image = Image.new("RGB", (400, 400), "red")
    points = [(100, 100), (150, 200), (200, 50), (400, 400)]
    draw = ImageDraw.Draw(image)
    draw.line(points, width=15, fill="green", joint="curve")
    image.save(output_path)

if __name__ == "__main__":
    line("jointed_lines.jpg")
4 nó bằng một màu và thay đổi
def arc(self, xy, start, end, fill=None, width=1):
    """Draw an arc."""
3 của Outline.

Tạo một tệp mới và đặt tên cho nó

# draw_ellipse.py

from PIL import Image, ImageDraw


def ellipse(output_path):
    image = Image.new("RGB", (400, 400), "white")
    draw = ImageDraw.Draw(image)
    draw.ellipse((25, 50, 175, 200), fill="red")

    draw.ellipse((100, 150, 275, 300), outline="black", width=5,
                 fill="yellow")

    image.save(output_path)

if __name__ == "__main__":
    ellipse("ellipse.jpg")
3. Sau đó điền vào mã này để bạn có thể bắt đầu vẽ hình chữ nhật:

# draw_line.py

import random
from PIL import Image, ImageDraw


def line(image_path, output_path):
    image = Image.open(image_path)
    draw = ImageDraw.Draw(image)
    colors = ["red", "green", "blue", "yellow",
              "purple", "orange"]

    for i in range(0, 100, 20):
        draw.line((i, 0) + image.size, width=5, 
                  fill=random.choice(colors))

    image.save(output_path)

if __name__ == "__main__":
    line("madison_county_bridge_2.jpg", "lines.jpg")
4

Mã này sẽ tạo ra một hình ảnh màu xanh là 400x400 pixel. Sau đó, nó sẽ vẽ hai hình chữ nhật. Hình chữ nhật đầu tiên sẽ được lấp đầy bằng màu đỏ. Thứ hai sẽ được lấp đầy với màu xanh lá cây và được phác thảo bằng màu vàng.

Khi bạn chạy mã này, bạn sẽ nhận được hình ảnh này làm đầu ra:

Hướng dẫn draw shape on image python - vẽ hình trên hình ảnh con trăn

Vẽ hình chữ nhật

Không phải những hình chữ nhật đáng yêu đó? Bạn có thể sửa đổi các điểm của hình chữ nhật để tạo hình chữ nhật mỏng hơn hoặc rộng hơn. Bạn cũng có thể sửa đổi chiều rộng phác thảo mà bạn thêm vào các hình chữ nhật.

Gói lên

Bạn có thể sử dụng gối để thêm hình dạng vào hình ảnh của bạn. Điều này có thể hữu ích để thêm phác thảo vào hình ảnh của bạn, làm nổi bật một hoặc nhiều phần của hình ảnh của bạn và hơn thế nữa.

Trong bài viết này, bạn đã tìm hiểu về các chủ đề sau:

  • Tham số chung
  • Dòng vẽ
  • Vẽ vòng cung
  • Hợp âm vẽ
  • Vẽ hình elip
  • Vẽ lát bánh
  • Vẽ đa giác
  • Vẽ hình chữ nhật

Phương pháp

def ellipse(self, xy, fill=None, outline=None, width=1):
    """Draw an ellipse."""
8 cho phép bạn vẽ một hình chữ nhật hoặc hình vuông bằng gối. Đây là cách
def ellipse(self, xy, fill=None, outline=None, width=1):
    """Draw an ellipse."""
8 được xác định:

Bạn có thể vượt qua hai bộ dữ liệu xác định tọa độ bắt đầu và kết thúc để vẽ hình chữ nhật. Hoặc bạn có thể cung cấp bốn tọa độ dưới dạng một bộ hộp (4 mục). Sau đó, bạn có thể thêm một # draw_jointed_line.py from PIL import Image, ImageDraw def line(output_path): image = Image.new("RGB", (400, 400), "red") points = [(100, 100), (150, 200), (200, 50), (400, 400)] draw = ImageDraw.Draw(image) draw.line(points, width=15, fill="green", joint="curve") image.save(output_path) if __name__ == "__main__": line("jointed_lines.jpg")9, # draw_jointed_line.py from PIL import Image, ImageDraw def line(output_path): image = Image.new("RGB", (400, 400), "red") points = [(100, 100), (150, 200), (200, 50), (400, 400)] draw = ImageDraw.Draw(image) draw.line(points, width=15, fill="green", joint="curve") image.save(output_path) if __name__ == "__main__": line("jointed_lines.jpg")4 nó bằng một màu và thay đổi def arc(self, xy, start, end, fill=None, width=1): """Draw an arc."""3 của Outline.

  • Tạo một tệp mới và đặt tên cho nó
    # draw_ellipse.py
    
    from PIL import Image, ImageDraw
    
    
    def ellipse(output_path):
        image = Image.new("RGB", (400, 400), "white")
        draw = ImageDraw.Draw(image)
        draw.ellipse((25, 50, 175, 200), fill="red")
    
        draw.ellipse((100, 150, 275, 300), outline="black", width=5,
                     fill="yellow")
    
        image.save(output_path)
    
    if __name__ == "__main__":
        ellipse("ellipse.jpg")
    3. Sau đó điền vào mã này để bạn có thể bắt đầu vẽ hình chữ nhật:
  • Mã này sẽ tạo ra một hình ảnh màu xanh là 400x400 pixel. Sau đó, nó sẽ vẽ hai hình chữ nhật. Hình chữ nhật đầu tiên sẽ được lấp đầy bằng màu đỏ. Thứ hai sẽ được lấp đầy với màu xanh lá cây và được phác thảo bằng màu vàng.
Hướng dẫn draw shape on image python - vẽ hình trên hình ảnh con trăn

Khi bạn chạy mã này, bạn sẽ nhận được hình ảnh này làm đầu ra:

Vẽ hình chữ nhật

Làm thế nào để bạn vẽ một hình dạng trong Python?

Lập trình hướng đối tượng trong Python: Tạo trò chơi phiêu lưu của riêng bạn..
Từ hình dạng nhập giấy, tam giác, hình chữ nhật, hình bầu dục ..
giấy = giấy ().
orth1 = hình chữ nhật ().
orth1. set_width (200) orth1. set_height (100) orth1. ....
orth1. vẽ tranh().
giấy. trưng bày().
# Đặt mã để tạo hình chữ nhật thứ 2 ở đây. trưng bày().

Làm thế nào để bạn vẽ một hộp trên một bức tranh trong Python?

Hình chữ nhật trong OpenCV Python: CV2 ...
Hình ảnh - đó là hình ảnh mà hình chữ nhật phải được vẽ ..
PT1 - đỉnh của hình chữ nhật ở góc trên cùng bên trái ..
PT2 - đỉnh của hình chữ nhật ở góc dưới bên phải ..
Màu sắc - Đó là màu của đường hình chữ nhật trong RGB ..
Độ dày - đó là độ dày của đường dây ..

Làm cách nào để vẽ một vòng tròn xung quanh một hình ảnh trong Python?

Các bước để tạo một vòng tròn trên một hình ảnh là:..
Đọc hình ảnh bằng hàm imread () ..
Chuyển hình ảnh này cho CV2.Phương thức Circle () cùng với các tham số khác như centre_coordinates, bán kính, màu và độ dày ..
Hiển thị hình ảnh bằng CV2.phương thức imshow () ..

Làm thế nào để bạn vẽ một đa giác với một hình ảnh trong Python?

Phương pháp polylines () được sử dụng để vẽ đa giác trên bất kỳ hình ảnh nào.Tham số: Hình ảnh: Đó là hình ảnh mà vòng tròn sẽ được vẽ.PTS: Mảng đường cong đa giác. is used to draw a polygon on any image. Parameters: image: It is the image on which circle is to be drawn. pts: Array of polygonal curves.