Hướng dẫn how do you load a set of images in python? - làm thế nào để bạn tải một tập hợp các hình ảnh trong python?
Tôi đang cố gắng mở một bộ hình ảnh trong Python, nhưng tôi hơi bối rối về cách tôi nên làm điều đó. Tôi biết cách làm điều đó với một hình ảnh, nhưng tôi không có manh mối về cách xử lý hàng trăm hình ảnh. Show
Tôi có một thư mục tệp với một vài trăm hình ảnh .jpg. Tôi muốn tải chúng trong một chương trình Python để thực hiện việc học máy về chúng. Làm thế nào tôi có thể làm điều này đúng cách? Tôi chưa có bất kỳ mã nào vì tôi đã phải vật lộn với điều này. Nhưng ý tưởng của tôi trong mã giả là
Làm thế nào tôi đã làm nó trước đây:
Mà hoạt động tốt vì định dạng. Al dữ liệu nằm trong một tệp. Cập nhật lần cuối vào ngày 12 tháng 9 năm 2019 Trước khi bạn có thể phát triển các mô hình dự đoán cho dữ liệu hình ảnh, bạn phải tìm hiểu cách tải và thao tác với hình ảnh và hình ảnh. Thư viện tiêu chuẩn phổ biến và thực tế nhất trong Python để tải và làm việc với dữ liệu hình ảnh là gối. Gối là phiên bản cập nhật của Thư viện hình ảnh Python, hoặc PIL, và hỗ trợ một loạt các chức năng thao tác hình ảnh đơn giản và tinh vi. Nó cũng là cơ sở cho hỗ trợ hình ảnh đơn giản trong các thư viện Python khác như Scipy và Matplotlib. Trong hướng dẫn này, bạn sẽ khám phá cách tải và thao tác dữ liệu hình ảnh bằng thư viện Gối Python. Sau khi hoàn thành hướng dẫn này, bạn sẽ biết:
Khởi động dự án của bạn với cuốn sách mới của tôi Deep Learning for Computer Vision, bao gồm các hướng dẫn từng bước và các tệp mã nguồn Python cho tất cả các ví dụ. with my new book Deep Learning for Computer Vision, including step-by-step tutorials and the Python source code files for all examples. Bắt đầu nào.
Tổng quan hướng dẫnHướng dẫn này được chia thành sáu phần; họ đang:
Cách cài đặt gốiCách tải và hiển thị hình ảnh Cách chuyển đổi hình ảnh thành mảng numpy và trở lại Cách lưu hình ảnh vào tệp Cách thay đổi kích thước hình ảnh Cách lật, xoay và cắt hình ảnh
Nó đã được phát triển và cung cấp hơn 25 năm trước và đã trở thành API tiêu chuẩn thực tế để làm việc với hình ảnh trong Python. Thư viện hiện không còn tồn tại và không còn được cập nhật và không hỗ trợ Python 3. Gối là một thư viện PIL hỗ trợ Python 3 và là thư viện hiện đại ưa thích để thao tác hình ảnh trong Python. Nó thậm chí còn được yêu cầu để tải hình ảnh đơn giản và lưu trong các thư viện khoa học Python khác như Scipy và Matplotlib.
Để được trợ giúp thiết lập môi trường SCIPY của bạn, hãy xem hướng dẫn từng bước:
Hướng dẫn cài đặt gối Gối được xây dựng trên đỉnh của PIL cũ và bạn có thể xác nhận rằng thư viện đã được cài đặt chính xác bằng cách in số phiên bản; Ví dụ: # Kiểm tra số phiên bản Gốinhập khẩu pil in ('phiên bản gối:', pil .__ phiên bản__) Cách tải và hiển thị hình ảnhCách chuyển đổi hình ảnh thành mảng numpy và trở lại Cách lưu hình ảnh vào tệp Cách thay đổi kích thước hình ảnh
Thư viện hình ảnh Python, hoặc viết tắt là PIL, là một thư viện nguồn mở để tải và điều khiển hình ảnh. Nó đã được phát triển và cung cấp hơn 25 năm trước và đã trở thành API tiêu chuẩn thực tế để làm việc với hình ảnh trong Python. Thư viện hiện không còn tồn tại và không còn được cập nhật và không hỗ trợ Python 3. Gối là một thư viện PIL hỗ trợ Python 3 và là thư viện hiện đại ưa thích để thao tác hình ảnh trong Python. Nó thậm chí còn được yêu cầu để tải hình ảnh đơn giản và lưu trong các thư viện khoa học Python khác như Scipy và Matplotlib. Thư viện gối được cài đặt như một phần của hầu hết các cài đặt SCIPY; Ví dụ, nếu bạn đang sử dụng Anaconda. Để được trợ giúp thiết lập môi trường SCIPY của bạn, hãy xem hướng dẫn từng bước:
Chạy ví dụ trước tiên sẽ tải hình ảnh, báo cáo định dạng, chế độ và kích thước, sau đó hiển thị hình ảnh trên máy tính để bàn của bạn. Hình ảnh được hiển thị bằng cách sử dụng ứng dụng xem trước hình ảnh mặc định cho hệ điều hành của bạn, chẳng hạn như xem trước trên macOS. Nhà hát Opera Sydney được hiển thị bằng ứng dụng xem trước hình ảnh mặc định Bây giờ bạn đã biết cách tải một hình ảnh, hãy để xem cách bạn có thể truy cập dữ liệu pixel của hình ảnh. Cách chuyển đổi hình ảnh thành mảng numpy và trở lạiThông thường trong học máy, chúng tôi muốn làm việc với hình ảnh dưới dạng các mảng dữ liệu pixel. Với Pillow được cài đặt, bạn cũng có thể sử dụng thư viện matplotlib để tải hình ảnh và hiển thị nó trong khung matplotlib. Điều này có thể đạt được bằng cách sử dụng hàm imread () tải trực tiếp hình ảnh một mảng pixel và hàm imshow () sẽ hiển thị một mảng pixel dưới dạng hình ảnh. Ví dụ dưới đây tải và hiển thị cùng một hình ảnh bằng cách sử dụng matplotlib, đến lượt nó, sẽ sử dụng gối dưới vỏ.
Chạy ví dụ đầu tiên tải hình ảnh và sau đó báo cáo loại dữ liệu của mảng, trong trường hợp này là số nguyên không dấu 8 bit, sau đó báo cáo hình dạng của mảng, trong trường hợp này, rộng 360 pixel bằng 640 pixel cao và ba kênh cho Màu đỏ, xanh lá cây và xanh dương. Cuối cùng, hình ảnh được hiển thị bằng matplotlib. Nhà hát Opera Sydney được hiển thị bằng Matplotlib Các chức năng trình bao bọc matplotlib có thể hiệu quả hơn so với sử dụng gối trực tiếp. Tuy nhiên, bạn có thể truy cập dữ liệu pixel từ hình ảnh gối. Có lẽ cách đơn giản nhất là xây dựng một mảng numpy và truyền trong đối tượng hình ảnh. Quá trình có thể được đảo ngược chuyển đổi một mảng dữ liệu pixel nhất định thành một đối tượng hình ảnh gối bằng hàm Image.FromArray (). Điều này có thể hữu ích nếu dữ liệu hình ảnh được thao tác như một mảng numpy và sau đó bạn muốn lưu nó sau dưới dạng tệp PNG hoặc JPEG. Ví dụ bên dưới tải ảnh dưới dạng đối tượng hình ảnh gối và chuyển đổi nó thành một mảng numpy, sau đó chuyển đổi nó trở lại một đối tượng hình ảnh một lần nữa.
Chạy ví dụ đầu tiên tải ảnh dưới dạng hình ảnh gối sau đó chuyển đổi nó thành một mảng numpy và báo cáo hình dạng của mảng. Cuối cùng, mảng được chuyển đổi trở lại thành một hình ảnh gối và các chi tiết được báo cáo.
Cả hai cách tiếp cận đều có hiệu quả để tải dữ liệu hình ảnh vào các mảng numpy, mặc dù hàm matplotlib imread () sử dụng ít dòng mã hơn so với tải và chuyển đổi một đối tượng hình ảnh gối và có thể được ưu tiên. Ví dụ: bạn có thể dễ dàng tải tất cả các hình ảnh trong một thư mục dưới dạng danh sách như sau:
In ('> Đã tải %s %s' %(tên tệp, img_data.shape))) Bây giờ chúng ta đã biết cách tải hình ảnh dưới dạng mảng numpy, hãy để Lôi nhìn vào cách lưu hình ảnh vào tệp.Cách lưu hình ảnh vào tệp Một đối tượng hình ảnh có thể được lưu bằng cách gọi hàm Save (). Điều này có thể hữu ích nếu bạn muốn lưu một hình ảnh ở một định dạng khác, trong trường hợp đó, đối số ‘định dạng‘ có thể được chỉ định, chẳng hạn như PNG, GIF hoặc PEG.
# Tạo hình ảnh gối # Tóm tắt chi tiết hình ảnh Có một số cách để chuyển đổi hình ảnh thành thang độ xám, nhưng Gối cung cấp hàm chuyển đổi () và chế độ ‘L‘ sẽ chuyển đổi hình ảnh thành thang độ xám.
Chạy ví dụ tải ảnh, chuyển đổi nó thành thang độ xám, lưu hình ảnh trong một tệp mới, sau đó tải lại và hiển thị nó để xác nhận rằng ảnh hiện là thang độ xám thay vì màu. Ví dụ về phiên bản ảnh của ảnh chụp ảnh Cách thay đổi kích thước hình ảnhĐiều quan trọng là có thể thay đổi kích thước hình ảnh trước khi mô hình hóa. Đôi khi nó là mong muốn để thu nhỏ tất cả các hình ảnh để có cùng chiều rộng hoặc chiều cao. Điều này có thể đạt được với gối bằng hàm hình thu nhỏ (). Hàm có một bộ xử lý với chiều rộng và chiều cao và hình ảnh sẽ được thay đổi kích thước sao cho chiều rộng và chiều cao của hình ảnh bằng hoặc nhỏ hơn hình dạng được chỉ định. Ví dụ, bức ảnh thử nghiệm mà chúng tôi đã làm việc có chiều rộng và chiều cao là (640, 360). Chúng ta có thể thay đổi kích thước nó thành (100, 100), trong trường hợp đó là kích thước lớn nhất, trong trường hợp này, chiều rộng, sẽ giảm xuống còn 100 và chiều cao sẽ được chia tỷ lệ để giữ lại tỷ lệ khung hình của hình ảnh. Ví dụ dưới đây sẽ tải ảnh và tạo một hình thu nhỏ nhỏ hơn với chiều rộng và chiều cao 100 pixel.
# hiển thị hình ảnh Chạy ví dụ tải ảnh, chuyển đổi nó thành thang độ xám, lưu hình ảnh trong một tệp mới, sau đó tải lại và hiển thị nó để xác nhận rằng ảnh hiện là thang độ xám thay vì màu. Ví dụ về phiên bản ảnh của ảnh chụp ảnh Cách thay đổi kích thước hình ảnh
# hiển thị hình ảnh Chạy ví dụ tải ảnh, chuyển đổi nó thành thang độ xám, lưu hình ảnh trong một tệp mới, sau đó tải lại và hiển thị nó để xác nhận rằng ảnh hiện là thang độ xám thay vì màu. Ví dụ về phiên bản ảnh của ảnh chụp ảnh Cách thay đổi kích thước hình ảnh Điều quan trọng là có thể thay đổi kích thước hình ảnh trước khi mô hình hóa.Đôi khi nó là mong muốn để thu nhỏ tất cả các hình ảnh để có cùng chiều rộng hoặc chiều cao. Điều này có thể đạt được với gối bằng hàm hình thu nhỏ (). Hàm có một bộ xử lý với chiều rộng và chiều cao và hình ảnh sẽ được thay đổi kích thước sao cho chiều rộng và chiều cao của hình ảnh bằng hoặc nhỏ hơn hình dạng được chỉ định. Ví dụ, bức ảnh thử nghiệm mà chúng tôi đã làm việc có chiều rộng và chiều cao là (640, 360). Chúng ta có thể thay đổi kích thước nó thành (100, 100), trong trường hợp đó là kích thước lớn nhất, trong trường hợp này, chiều rộng, sẽ giảm xuống còn 100 và chiều cao sẽ được chia tỷ lệ để giữ lại tỷ lệ khung hình của hình ảnh. Ví dụ dưới đây sẽ tải ảnh và tạo một hình thu nhỏ nhỏ hơn với chiều rộng và chiều cao 100 pixel. # Tạo hình thu nhỏ của hình ảnh# Báo cáo kích thước của hình ảnh # Tạo một hình thu nhỏ và tỷ lệ khung hình bảo tồn
Chạy ví dụ tải ảnh và tạo các phiên bản lật ngang và dọc của bức ảnh, sau đó vẽ cả ba phiên bản dưới dạng phụ sử dụng matplotlib. Bạn sẽ lưu ý rằng hàm imshow () có thể vẽ trực tiếp đối tượng hình ảnh mà không phải chuyển đổi nó thành một mảng numpy. Biểu đồ của các phiên bản gốc, ngang và dọc của một bức ảnh Xoay hình ảnhMột hình ảnh có thể được quay bằng cách sử dụng hàm xoay () và truyền trong góc cho vòng quay. Hàm cung cấp điều khiển bổ sung như có hay không mở rộng kích thước của hình ảnh để phù hợp với các giá trị pixel được xoay (mặc định là clip cùng kích thước), trong đó tập trung vào hình ảnh (mặc định là trung tâm) và Điền màu cho các pixel bên ngoài hình ảnh (mặc định là màu đen). Ví dụ dưới đây tạo ra một vài phiên bản xoay của hình ảnh.
Chạy ví dụ vẽ các bức ảnh gốc, sau đó là một phiên bản của bức ảnh quay 45 độ và khác xoay 90 độ. Bạn có thể thấy rằng trong cả hai vòng quay, các pixel được cắt theo kích thước ban đầu của hình ảnh và các pixel trống được lấp đầy với màu đen. Cốt truyện của phiên bản gốc và xoay của một bức ảnh Hình ảnh bị cắtMột hình ảnh có thể được cắt: nghĩa là, một mảnh có thể được cắt ra để tạo ra một hình ảnh mới, sử dụng hàm crop (). Hàm cây trồng có một đối số tuple xác định hai tọa độ x/y của hộp để cắt ra khỏi hình ảnh. Ví dụ: nếu hình ảnh là 2.000 x 2.000 pixel, chúng ta có thể cắt ra một hộp 100 x 100 ở giữa hình ảnh bằng cách xác định một tuple với các điểm trên bên trái và dưới cùng bên phải (950, 950, 1050, 1050 ). Ví dụ dưới đây cho thấy cách tạo một hình ảnh mới như một cây trồng từ một hình ảnh được tải.
# Xoay 90 độ Chạy ví dụ vẽ các bức ảnh gốc, sau đó là một phiên bản của bức ảnh quay 45 độ và khác xoay 90 độ. Bạn có thể thấy rằng trong cả hai vòng quay, các pixel được cắt theo kích thước ban đầu của hình ảnh và các pixel trống được lấp đầy với màu đen.Cốt truyện của phiên bản gốc và xoay của một bức ảnh
Ví dụ dưới đây cho thấy cách tạo một hình ảnh mới như một cây trồng từ một hình ảnh được tải. # Ví dụ về việc cắt một hình ảnh# Tạo hình ảnh được cắt
Nếu bạn khám phá bất kỳ phần mở rộng nào trong số này, tôi sẽ rất thích biết.Đọc thêm Phần này cung cấp nhiều tài nguyên hơn về chủ đề nếu bạn đang muốn đi sâu hơn.
Hướng dẫn Cẩm nang Gối Dự án Gối GithubTrang chủ Thư viện hình ảnh Python (PIL)Thư viện hình ảnh Python, Wikipedia. Matplotlib: Hướng dẫn hình ảnh Bản tóm tắtself-study tutorials on topics like: Trong hướng dẫn này, bạn đã phát hiện ra cách tải và thao tác dữ liệu hình ảnh bằng thư viện Pillow Python.Cụ thể, bạn đã học được: Cách cài đặt thư viện gối và xác nhận nó đang hoạt động chính xác. |