Đoạn code này dùng để đọc và hiển thị hình ảnh



tải về 20.34 Kb.
Chuyển đổi dữ liệu08.11.2023
Kích20.34 Kb.
#55588
giaithich


  • import cv2: Thư viện OpenCV để xử lý ảnh.

  • from matplotlib import pyplot as plt: Thư viện Matplotlib để hiển thị ảnh.

  • image = cv2.imread('bienso1.jpg'): Đọc hình ảnh từ tệp bienso1.jpg.

  • image.shape: In ra kích thước của hình ảnh.

Đoạn code này dùng để đọc và hiển thị hình ảnh.

  • import imutils: Thư viện imutils để hỗ trợ các hàm xử lý ảnh cơ bản.

  • image1 = imutils.resize(image, width=300): Sử dụng hàm resize() của thư viện imutils để thay đổi kích thước hình ảnh thành 300 pixel chiều rộng.

  • img = cv2.cvtColor(image1, cv2.COLOR_BGR2RGB): Sử dụng hàm cvtColor() của thư viện OpenCV để chuyển đổi không gian màu của hình ảnh từ BGR sang RGB để phù hợp với các hàm xử lý ảnh tiếp theo.

  • plt.imshow(image): Hiển thị hình ảnh.

  • plt.show(): Đợi người dùng nhấn phím để đóng cửa sổ hiển thị.

Đoạn code này dùng để thay đổi kích thước và chuyển đổi không gian màu của hình ảnh.

  • gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY): Sử dụng hàm cvtColor() của thư viện OpenCV để chuyển đổi hình ảnh từ không gian màu BGR sang thang màu xám.

  • plt.imshow(gray_image,cmap="gray"): Hiển thị hình ảnh thang màu xám.

  • plt.show(): Đợi người dùng nhấn phím để đóng cửa sổ hiển thị.

  • gray_image = cv2.bilateralFilter(gray_image, 11,17,17): Sử dụng hàm bilateralFilter() của thư viện OpenCV để lọc nhiễu cho hình ảnh thang màu xám. Hàm này sử dụng bộ lọc song phương để lọc nhiễu đồng thời bảo toàn các cạnh của hình ảnh.

  • plt.imshow(gray_image,cmap="gray"): Hiển thị hình ảnh thang màu xám sau khi lọc nhiễu.

  • plt.show(): Đợi người dùng nhấn phím để đóng cửa sổ hiển thị.

  • edged = cv2.Canny(gray_image, 30, 200): Sử dụng hàm Canny() của thư viện OpenCV để tìm cạnh cho hình ảnh thang màu xám. Hàm này sử dụng bộ lọc Canny để tìm các cạnh mạnh trong hình ảnh.

  • plt.imshow(edged,cmap="gray"): Hiển thị hình ảnh với các cạnh được tìm thấy.

  • plt.axis('off'): Tắt trục tọa độ của hình ảnh.

  • plt.show(): Đợi người dùng nhấn phím để đóng cửa sổ hiển thị.

Đoạn code này dùng để chuyển đổi hình ảnh sang thang màu xám, lọc nhiễu và tìm cạnh.

  • cnts, new = cv2.findContours(edged.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE): Sử dụng hàm findContours() của thư viện OpenCV để tìm kiếm tất cả các đường viền trong hình ảnh. Tham số RETR_LIST chỉ định rằng tất cả các đường viền sẽ được tìm thấy, và tham số CHAIN_APPROX_SIMPLE chỉ định rằng các đường viền sẽ được xấp xỉ bằng các đường thẳng.

  • image3=image.copy(): Tạo một bản sao của hình ảnh.

  • image3 = cv2.cvtColor(image3, cv2.COLOR_BGR2RGB): Chuyển đổi không gian màu của bản sao hình ảnh từ BGR sang RGB.

  • cv2.drawContours(image3, cnts, -1, (0,255,0),1): Vẽ tất cả các đường viền được tìm thấy lên bản sao hình ảnh, sử dụng màu xanh lá cây (0, 255, 0) và độ dày đường kẻ là 1.

  • plt.imshow(image3): Hiển thị bản sao hình ảnh với các đường viền được vẽ.

  • plt.show(): Đợi người dùng nhấn phím để đóng cửa sổ hiển thị.

  • cnts = sorted (cnts, key = cv2.contourArea, reverse = True) [:10]: Sắp xếp các đường viền theo diện tích, theo thứ tự giảm dần, và chỉ lấy 10 đường viền đầu tiên.

  • image2 = image.copy(): Tạo một bản sao của hình ảnh.

  • image2 = cv2.cvtColor(image2, cv2.COLOR_BGR2RGB): Chuyển đổi không gian màu của bản sao hình ảnh từ BGR sang RGB.

  • cv2.drawContours(image2,cnts,-1,(0,255,0),1): Vẽ 10 đường viền đầu tiên lên bản sao hình ảnh, sử dụng màu xanh lá cây (0, 255, 0) và độ dày đường kẻ là 1.

  • plt.imshow(image2): Hiển thị bản sao hình ảnh với 10 đường viền đầu tiên được vẽ.

  • plt.show(): Đợi người dùng nhấn phím để đóng cửa sổ hiển thị.

  • screenCnt = None: Khởi tạo biến screenCnt bằng giá trị None.

  • for c in cnts:: Duyệt qua tất cả các đường viền được tìm thấy.

    • perimeter = cv2.arcLength (c, True): Tính chu vi của đường viền.

    • approx = cv2.approxPolyDP (c, 0.018 * perimeter, True): Xấp xỉ đường viền bằng một đa giác, sử dụng độ chính xác là 0.018 lần chu vi của đường viền.

    • if len(approx) == 4:: Nếu đa giác xấp xỉ có 4 cạnh thì:

      • screenCnt = approx

    • x,y,w,h = cv2.boundingRect(c): Tính tọa độ và kích thước của hình chữ nhật bao quanh đường viền.

    • new_img=image[y:y+h, x:x+w]

    • plt.imshow(new_img): Hiển thị hình ảnh được cắt từ hình ảnh gốc, sử dụng tọa độ và kích thước của hình chữ nhật bao quanh đường viền.

    • plt.show(): Đợi người dùng nhấn phím để đóng cửa sổ hiển thị.

    • break

  • cv2.drawContours (image, [screenCnt], -1, (0,255,0), 1): Vẽ đường viền của màn hình lên hình ảnh gốc, sử dụng màu xanh lá cây (0, 255, 0) và độ dày đường kẻ là 1.

  • image = cv2.cvtColor (image, cv2.COLOR_BGR2RGB): Chuyển đổi không gian màu của hình ảnh gốc từ BGR sang RGB.

  • plt.imshow(image): Hiển thị hình ảnh gốc với đường viền của màn hình được vẽ.

  • plt.show(): Đợi người dùng nhấn phím để đóng cửa sổ hiển thị.

Đoạn code trên được sử dụng để tìm kiếm các đường viền trong hình ảnh và vẽ các đường viền đó lên hình ảnh.
tải về 20.34 Kb.

Chia sẻ với bạn bè của bạn:




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương