Đọc hình ảnh từ thư mục python opencv

Xin chào mọi người, tôi là David Praise và trong hướng dẫn hôm nay, chúng ta sẽ tìm hiểu cách tải và hiển thị hình ảnh bằng OpenCV. Sau đó, chúng ta sẽ khám phá cách trích xuất các kích thước không gian về hình ảnh của chúng ta

Nếu bạn chưa cài đặt OpenCV trên máy tính của mình, tôi đã phát hành một hướng dẫn trong đó tôi nói về những sai lầm mà tôi đã mắc phải khi cài đặt OpenCV trong quá khứ;

Sau khi bạn đã tải xuống thư viện OpenCV và đã cài đặt các điều kiện tiên quyết của nó, chúng tôi sẽ xác thực xem môi trường của chúng tôi đã được thiết lập chính xác hay chưa bằng cách sử dụng các bước sau

Chúng tôi sẽ đầu tiên

  • Đọc một hình ảnh từ một thư mục
  • Trích xuất các kích thước không gian có ý nghĩa từ hình ảnh của chúng tôi
  • Hiển thị hình ảnh trên màn hình để bạn xem
  • Cuối cùng, sau đó lưu hình ảnh hiển thị

Cấu trúc dự án

Trước khi chúng tôi bắt đầu triển khai tập lệnh Python cho hướng dẫn này, trước tiên hãy xem lại cấu trúc thư mục dự án của chúng tôi

Đọc hình ảnh từ thư mục python opencv
Nhấp vào đây để tải xuống mã

Cách đọc và hiển thị hình ảnh bằng OpenCV

1

2

3

4

5

6

7

$ cây . --dirsfirst

.

├── đĩa mềm. jpg

├── load_image. py

└── đầu ra. jpg

 

0 thư mục, 3 tệp

Thư mục chứa

  • Tệp tập lệnh Python của chúng tôi load_image.py
  • Hình ảnh thử nghiệm của chúng tôi, floppy_disk.jpg
  • Hình ảnh output.jpg sẽ được tạo nhanh chóng trong khi tập lệnh đang được thực thi

Bây giờ hãy triển khai tập lệnh load_image.py Python của chúng ta bằng OpenCV

Triển khai tập lệnh tải hình ảnh OpenCV

Đầu tiên, tạo một tập lệnh mới, đặt tên là load_image.py và chèn đoạn mã sau vào

Cách đọc và hiển thị hình ảnh bằng OpenCV

1

2

3

4

5

6

7

8

9

# nhập các mô-đun cần thiết

nhập argparse

nhập cv2

 

# khởi tạo trình phân tích cú pháp đối số và thiết lập các đối số cần thiết

trình phân tích cú pháp = argparse. Trình phân tích đối số()

trình phân tích cú pháp. add_argument('-image', required=True, help='Path to the image')

trình phân tích cú pháp. add_argument('--đầu ra', default='output.jpg', trợ giúp='Đường dẫn đến hình ảnh đầu ra')

args = vars(trình phân tích cú pháp.parse_args())

Trong Dòng 2 – 3, chúng tôi đã nhập opencv để hoạt động với hình ảnh mẫu của mình;

Sau đó, trên Dòng 6 – 9, chúng tôi chèn hai đối số của mình

  • --image, là đường dẫn đến nơi hình ảnh của chúng tôi nằm trên đĩa
  • --output, là đường dẫn đến nơi hình ảnh của chúng ta sẽ được lưu trữ. Chúng tôi cũng đã bao gồm một tên đầu ra mặc định, nếu không có gì thì nó không được chỉ định thông qua dòng lệnh

Cách đọc và hiển thị hình ảnh bằng OpenCV

11

12

13

# tải hình ảnh từ vị trí của tệp và lấy

# kích thước không gian như chiều rộng, chiều cao và #không có kênh

hình ảnh = cv2. imread(args['])

Từ đó, chúng tôi sẽ hướng dẫn OpenCV đi và tìm hình ảnh"floppy_disk.jpg", đọc nó và sau đó lưu trữ nó trong biến “hình ảnh” này. Sử dụng hàm cv2.imread

Cách đọc và hiển thị hình ảnh bằng OpenCV

15

16

17

18

19

20

21

# lấy và hiển thị chiều rộng, chiều cao và #no của kênh

# hình ảnh được tải hiện có, trong cửa sổ đầu cuối

(iH, iW, iC) = image.hình dạng[. 3]

 

in(f"Chiều cao. {iH} pixel")

in(f"Chiều rộng. {iW} pixel")

in(f"Không có kênh nào. {iC}")

Tiếp tục, để có được kích thước không gian của hình ảnh mà tôi đã đề cập trước đó, chúng ta có thể dễ dàng trích xuất thông tin này bằng cách gọi thuộc tính hình dạng

Khi chương trình được thực thi, chúng tôi sẽ nhận được chiều cao và chiều rộng tính bằng pixel, bao gồm cả số lượng kênh.  

Cách đọc và hiển thị hình ảnh bằng OpenCV

23

24

# lưu hình ảnh trực tiếp vào thư mục hiện tại của bạn

cv2. imwrite(args['], image)

Chúng tôi cũng có thể lưu hình ảnh mới bằng tên mặc định, “đầu ra. jpg” đã được chỉ định trong đích đầu ra trên Dòng 8

Ghi chú. nó giống như hình ảnh được tải, nhưng OpenCV sẽ lưu nó với một tên khác trong thư mục làm việc hiện tại của chúng tôi.  

Bạn sẽ thấy nó trong thời gian thực vì nó được tạo khi chương trình đang chạy

Cách đọc và hiển thị hình ảnh bằng OpenCV

26

27

28

29

30

# hiển thị hình ảnh và đợi bất kỳ phím nào được nhấn

# sau đó xóa mọi cửa sổ gui đã tạo khỏi màn hình & bộ nhớ

cv2. imshow('Hình ảnh', image)

cv2. waitKey(0)

cv2. destroyAllWindows()

Cuối cùng, chúng tôi sẽ hiển thị hình ảnh bằng cách hiển thị ảnh của nhiều đĩa mềm trên màn hình nền;

Hiển thị hình ảnh đã tải OpenCV

Bây giờ điều đó đã được triển khai, đã đến lúc đọc hình ảnh của chúng tôi từ đĩa bằng OpenCV

Từ đó, kích hoạt thiết bị đầu cuối của bạn và thực hiện lệnh sau

Cách đọc và hiển thị hình ảnh bằng OpenCV

1

2

3

4

5

$ python3 load_image. py --hình ảnh đĩa mềm. jpg

$

$ Chiều rộng. 400 pixel

$ Chiều cao. 600 pixel

$ Không có của kênh. 3

Đọc hình ảnh từ thư mục python opencv
Hình 1. Đang tải hình ảnh từ máy tính của bạn bằng OpenCV và cv2. imread

Thưởng

Khi bạn yêu cầu OpenCV thực hiện một tác vụ cụ thể, nó có thể không tìm thấy hình ảnh trong hầu hết các trường hợp

Khi xây dựng các ứng dụng trong thế giới thực, bạn không nên tránh xây dựng các trường hợp cạnh để tránh toàn bộ ứng dụng của bạn gặp sự cố trong quá trình sản xuất.  

Cách đọc và hiển thị hình ảnh bằng OpenCV

1

2

3

4

5

6

$ python3 load_image. py --hình ảnh . /floy_disk. jpg

$

$ Truy nguyên (hầu hết gần đây call last):

$   Tệp "load_image. py", dòng 18, in <module>

$     (iW, iH, iC) = image.hình dạng[. 3]

$ Lỗi thuộc tính. 'NoneType' đối tượng không attribute 'shape'

Nếu chúng tôi đã chỉ định sai đường dẫn đến hình ảnh, chúng tôi sẽ gặp lỗi Không có hoặc Không có Loại, điều này có thể là do

  • Đường dẫn không hợp lệ được chỉ định làm đầu vào hoặc
  • Hình ảnh có thể đã bị hỏng hoặc OpenCV không tải hình ảnh đúng cách

Tất nhiên, chúng tôi không muốn điều này ảnh hưởng đến các thủ tục khác bên dưới những dòng này. Do đó, hãy kiểm tra tại chỗ mà không mất hàng giờ để gỡ lỗi những gì có thể đã sai

Bản tóm tắt

Bài viết này đã giải thích cách sử dụng OpenCV để tải và hiển thị hình ảnh của bạn từ đĩa. sử dụng

  • ________số 8. đọc hình ảnh từ đĩa sau khi nhận được đường dẫn đến hình ảnh
  • floppy_disk.jpg0. hiển thị hình ảnh trên màn hình của bạn
  • floppy_disk.jpg1. đợi một lần nhấn phím;

Cuối cùng, tôi cũng đã đề cập đến một số lỗi phổ biến khi tải hình ảnh của bạn từ đĩa và cách xây dựng trường hợp biên xung quanh chức năng đó

Cái gì tiếp theo?

Bây giờ, những gì tiếp theo? . Cho đến lúc đó, hãy chia sẻ, thích video ở trên, bình luận và đăng ký