Hướng dẫn how to reshape the image in python - cách định hình lại hình ảnh trong python
Trước tiên tôi muốn chuyển đổi hình ảnh gốc (trong đó hình dạng và dtype là 9) thành mảng 1D để tôi có thể nhập mảng 1D đó vào tập huấn luyện làm một quan sát. Show
Bây giờ tôi muốn chuyển đổi mảng 1D đó thành dạng ban đầu. Để chuyển đổi hình ảnh gốc thành mảng 1D, tôi đã sử dụng hàm 0 có sẵn trong Numpy. Dưới đây là mã:
Bây giờ tôi muốn chuyển đổi ma trận trên (kết quả từ 1) thành ma trận gốc (tức là 2 trong hình dạng).
Xin vui lòng cho tôi biết tôi nên làm gì. Cập nhật: Tôi đã kiểm tra hình dạng của 3 và nó xuất hiện
Nhưng 6291456 = (1024*1024*3*2). Bây giờ tôi bối rối rằng từ đâu trong thời hạn thêm này (tức là 2) xuất hiện.2). Now I am confused that from where does this extra term(i.e 2) comes out. Tôi cũng đã sử dụng lệnh định hình lại nhưng lỗi xuất hiện khi tôi thực thi lệnh. Resizing Images là một phần không thể thiếu của web, cho dù hiển thị hình ảnh trên trang web hoặc ứng dụng của bạn, lưu trữ hình ảnh độ phân giải thấp hơn hoặc tạo bộ đào tạo cho các mạng thần kinh. Python cung cấp một bộ tùy chọn phong phú để thực hiện một số tác vụ thay đổi kích thước hình ảnh thường xuyên. Bài viết này sẽ hướng dẫn bạn qua các tùy chọn đó và xem ImageKit-một giải pháp sẵn sàng, dựa trên đám mây, cung cấp thao tác hình ảnh thời gian thực. Chúng tôi sẽ xem xét Hãy chắc chắn rằng bạn có một phiên bản Python gần đây được cài đặt trên hệ thống của bạn, tốt nhất là Python 3.6+, sau đó quay một môi trường ảo. Khi chúng tôi đến ImageKit sau trong bài viết này, bạn sẽ cần đăng ký tài khoản miễn phí trên trang web của ImageKit. Kế hoạch miễn phí có quyền truy cập vào tất cả các tính năng chúng tôi cần để thay đổi kích thước hình ảnh và các phép biến đổi khác. Chúng tôi sẽ sử dụng một hình ảnh của Asad từ Pexels cho tất cả các ví dụ trong bài viết này. Hình ảnh này cũng được lưu trữ trên ImageKit. Gối là một trong những lựa chọn phổ biến nhất để thực hiện các nhiệm vụ thao tác hình ảnh cơ bản như cắt xén, thay đổi kích thước hoặc thêm hình mờ. Cài đặt phiên bản mới nhất của Gối với
Gối cung cấp phương thức Resize (), lấy một bộ (chiều rộng, chiều cao) làm đối số.
Chúng tôi đọc hình ảnh của chúng tôi bằng phương pháp 5 từ mô -đun hình ảnh. Sau đó, chúng tôi sử dụng 6 với một tuple, đại diện cho chiều rộng và chiều cao của hình ảnh đầu ra, tương ứng, như một đối số chứa kích thước mới.Đây là cách hình ảnh kích thước của chúng tôi trông như thế nào Đầu ra của hình ảnh thay đổi kích thướcDuy trì tỷ lệ khung hình trong khi thay đổi kích thướcPhương pháp 6 khá tiện dụng và nhanh chóng để làm việc, nhưng nó không phải lúc nào cũng cho kết quả tốt nhất. Hình ảnh được thay đổi kích thước bằng phương pháp này có thể được kéo dài hoặc buộc phải lắp trong hộp và do đó bị sai lệch.ImageKit làm cho nó dễ dàng thay đổi kích thước hình ảnh một cách lố bịch trong khi duy trì & nbsp; tỷ lệ khung hình. Xem cách ImageKit hoạt động để thay đổi kích thước.
8 có thể giải quyết vấn đề sai lệch, nhưng nó tạo ra phiên bản hình thu nhỏ của hình ảnh có kích thước không vượt quá các kích thước được chỉ định trong các đối số.
Phương thức hình thu nhỏ thay đổi kích thước hình ảnh tại chỗ mà không trả lại một đối tượng hình ảnh. Do đó, hãy đảm bảo lưu tệp với một tên khác. Hình ảnh được thay đổi kích thước phù hợp với hình thu nhỏCắt một hình ảnh với gốiPhương pháp 9 được sử dụng để cắt hình ảnh chấp nhận 4-Tuple của tọa độ X và Y của góc trên bên trái và góc dưới bên phải của khu vực cây trồng.Vì vậy, nếu chúng ta muốn cắt một hình ảnh từ điểm (300.300) xuống (700.900) điểm, mã sẽ là Có một phương pháp dễ dàng hơn để sử dụng 0. Phương thức 1 chấp nhận hai đối số:There is an easier method of using 0. The 1 method accepts two arguments:
Dưới đây là hình ảnh mẫu của chúng tôi được cắt bằng 600px từ tất cả các phía. Hình ảnh được cắt bằng gốiBạn nên kiểm tra Sổ tay gối để biết các hoạt động hình ảnh phức tạp hơn.pillow handbook for more complex image operations. Phần thưởng: Thêm hình mờ vào hình ảnhĐể thêm hình mờ, chúng ta cần sử dụng các phương pháp FenseDraw và ImageFont. Mô-đun ImageDraw cung cấp API sử dụng đơn giản để làm việc với đồ họa 2D, từ tạo đa giác đến viết văn bản. ImageFont đặt phông chữ của văn bản Watermark. 0Hãy chắc chắn chọn một phông chữ có sẵn trên hệ thống của bạn. Bạn có thể đặt vị trí, điền, neo hoặc ngôn ngữ. Bạn cũng có thể tải xuống một phông chữ bạn chọn và cung cấp đường dẫn đến nó. Đây là đầu ra mẫu - Áp dụng một hình mờ đơn giản trên hình ảnhThay đổi kích thước hình ảnh bằng OpenCV
Đầu tiên, chúng ta hãy cài đặt OpenCV mới nhất cho Python bằng PIP. 1Lưu ý rằng chúng tôi đang sử dụng OpenCV 4.5 cho hướng dẫn này. 4 là tên của trình bao bọc Python.Thay đổi kích thước với opencvMặc dù OpenCV là một lựa chọn khả thi để thay đổi kích thước hình ảnh, nhưng nó phù hợp nhất cho các nhiệm vụ hạng nặng như phát hiện đối tượng. Bám sát gối để thao tác hình ảnh cơ bản hoặc cuộn bên dưới để xem ImageKit làm điều đó như thế nào. Thay đổi kích thước hình ảnh có thể được thực hiện bằng phương pháp 5. 2Cắt một hình ảnh với opencvOpenCV sử dụng một mảng numpy dưới mui xe để thể hiện hình ảnh. Chúng ta có thể tận dụng việc cắt mảng để trích xuất một phần của pixel chúng ta cần, tức là, cắt hình ảnh. Vì đây là một mảng 2D, chúng tôi cần chỉ định tọa độ bắt đầu và kết thúc, giống như chúng tôi đã làm trong khi cắt hình ảnh bằng gối. Mặc dù, cú pháp ở đây hơi khác nhau. Nếu chúng ta muốn cắt một hình ảnh bắt đầu từ (0,0) điểm đến (2732, 3640), thì chúng ta có thể làm điều này với OpenCV như hình dưới đây 3Bạn có thể đọc thêm về hướng dẫn xử lý hình ảnh từ OpenCV.image processing tutorials from OpenCV. Sử dụng ImageKit để thay đổi kích thước và cắt hình ảnhCả Gối và OpenCV là những lựa chọn tốt để thay đổi kích thước và cắt hình ảnh. Nhưng các giải pháp này yêu cầu thiết lập và bảo trì rộng rãi phù hợp với nhu cầu kinh doanh thay đổi. Đây có thể không phải là việc sử dụng tốt nhất thời gian của nhóm hoặc nhóm của bạn khi các công cụ như ImageKit.io có thể thực hiện cùng một công việc cho bạn với nỗ lực tối thiểu. ImageKit.io là một sản phẩm tối ưu hóa, thao tác và lưu trữ hình ảnh và video thời gian thực có thể giúp bạn thực hiện thay đổi kích thước cơ bản và cắt xén hình ảnh của bạn và hơn thế nữa. Bạn có tính linh hoạt để tải hình ảnh của mình lên thư viện phương tiện tích hợp hoặc đính kèm lưu trữ đám mây hoặc máy chủ hiện tại của bạn vào ImageKit và bắt đầu cung cấp các tệp được tối ưu hóa. Một số tối ưu hóa hình ảnh và video được thực hiện tự động, xem xét nhiều yếu tố, trong khi thay đổi kích thước, cắt xén và các phép biến đổi khác có thể được thực hiện bằng cách sửa đổi URL trong thời gian thực. Thiết lập với ImageKitTrong ví dụ của chúng tôi, chúng tôi đã tải hình ảnh mẫu lên ImageKit.
Bạn nên đăng ký một tài khoản miễn phí trên ImageKit đi kèm với số lượng lớn băng thông lưu trữ và phân phối. Bạn có thể tải xuống hình ảnh gốc từ các pexels từ đây và tải nó lên thư viện phương tiện của bạn. Chúng tôi sẽ sử dụng SDK Python của ImageKit để tạo các URL hình ảnh được thay đổi kích thước và cắt. Bạn có thể cài đặt SDK này bằng lệnh sau - 5Thay đổi kích thước cơ bản bằng cách thay đổi chiều cao và chiều rộngThay đổi kích thước hình ảnh trong ImageKit là đơn giản. Chỉ cần thêm chuyển đổi kích thước cần thiết vào URL và bạn sẽ nhận được hình ảnh thay đổi kích thước trong thời gian thực. Ví dụ: để có được hình ảnh mẫu có chiều rộng 200px, URL sẽ là - 6Image được thay đổi kích thước theo chiều rộng 200px bằng các tham số chuyển đổi dựa trên URLMặc dù đây là một hoạt động nối chuỗi đơn giản, SDK Python làm cho mã đơn giản và có thể đọc được hơn. 7Ex ví dụ về việc tạo URL ở chiều rộng 200px với SDK PythonTương tự, nếu chúng ta muốn nhận hình ảnh được thay đổi kích thước 400 x 300px từ ImageKit, URL sẽ chứa các tham số chuyển đổi chiều cao và chiều rộng. 8Mã tương ứng với SDK Python sẽ 9Có một số tùy chọn chuyển đổi hình ảnh khác với ImageKit. Bạn có thể đọc về chúng từ tài liệu sản phẩm hoặc từ tài liệu SDK Python. Hình ảnh cắt xén với tỷ lệ khung hình cụ thểMột chuyển đổi khác có sẵn trong ImageKit là chuyển đổi tỷ lệ khung hình. Bạn có thể sử dụng nó với độ rộng hoặc biến đổi chiều cao để sửa lỗi và biến đổi khung hình của hình ảnh đầu ra. Ví dụ: để có được một hình ảnh ở chiều rộng 800px với tỷ lệ khung hình 4: 3, URL sẽ 0Các tùy chọn cắt xén có sẵn với ImageKitTrong các ví dụ trên, nếu tỷ lệ khung hình đầu ra không khớp với tỷ lệ khung hình đầu vào, hình ảnh sẽ bị cắt xung quanh trung tâm của bản gốc theo mặc định. Tuy nhiên, ImageKit cung cấp cho chúng tôi nhiều tùy chọn cắt xén có thể ngăn chặn việc cắt xén hình ảnh và giúp chúng tôi có được đầu ra cần thiết. Hãy xem xét một số tùy chọn cắt xén tiêu chuẩn dưới đây. 1. Không cắt xén - Buộc kích thước được yêu cầu Bạn có thể làm điều này bằng cách thêm tham số chuyển đổi 6 vào URL. Điều này sẽ buộc phù hợp với hình ảnh theo kích thước được yêu cầu. Mặc dù, vì đây là một lực phù hợp, nó có thể khiến hình ảnh bị sai lệch. 1 Hình ảnh phù hợp với kích thước 400x200pxThe image is force-fit to the 400x200px sizeTrong SDK Python, điều này có thể được chỉ định bằng cách sử dụng chuyển đổi 7 22. Lắp bên trong một thùng chứa Chiến lược cây trồng 8 phù hợp với hình ảnh bên trong một thùng chứa có chiều cao và chiều rộng xác định trong khi bảo tồn tỷ lệ khung hình. Chiều cao hoặc chiều rộng của hình ảnh có thể khác với kích thước được yêu cầu và hình ảnh kết quả sẽ luôn nhỏ hơn các kích thước được chỉ định. 3 Hình ảnh phù hợp bên trong hộp 400x200pxThe image fits inside the 400x200px box3. Lắp bên ngoài một thùng chứa Đối diện với cây trồng 8, cây trồng 0 dẫn đến một hình ảnh ít nhất là kích thước được chỉ định bằng cách sử dụng kích thước chiều cao và chiều rộng. Chiều cao hoặc chiều rộng của hình ảnh có thể khác với kích thước được yêu cầu và hình ảnh kết quả sẽ luôn lớn hơn các kích thước được chỉ định. 4 Hình ảnh kết quả lớn hơn kích thước 400x200px được chỉ địnhThe resulting image is larger than the 400x200px dimension specified4. Pad một hình ảnh Nếu bạn vẫn muốn hình ảnh kết quả phù hợp với kích thước đầu ra được yêu cầu nhưng không được cắt, bạn có thể sử dụng chế độ cây trồng 1. Lưu ý rằng điều này khác với các phép biến đổi 7 được sử dụng ở trên và được chỉ định bằng cách sử dụng chuyển đổi 3. Bạn cũng có thể chỉ định màu đệm được thêm vào xung quanh hình ảnh bằng cách sử dụng chuyển đổi nền. 5URL kết quả là 6Image với phần đệm sử dụng URL một tham sốImage with padding using URL a parameterBạn có thể thấy phần đệm màu xám xung quanh hình ảnh, hoàn toàn phù hợp với kích thước đầu ra 400 x 200px mà không cần cắt hình ảnh. Phần thưởng: Thêm hình mờ vào hình ảnh bằng ImageKitImageKit cung cấp hơn 40 tham số chuyển đổi thời gian thực khác nhau cho hình ảnh. Chúng tôi có thể sử dụng chúng để thêm cả lớp phủ hình ảnh và văn bản vào hình ảnh của chúng tôi và kiểm soát cách thức và nơi chúng được hiển thị trên hình ảnh của chúng tôi. Bạn có thể tham khảo tài liệu hoàn chỉnh Overlay ở đây. Chúng ta hãy xem một ví dụ để thêm văn bản trên hình ảnh ở góc trên cùng bên trái của hình ảnh cơ sở của chúng tôi. Ở đây chúng tôi chỉ định văn bản, kích thước phông chữ của nó và màu phông chữ trong chính URL. 7URL hình ảnh kết quả là 8Adding Watermark cho hình ảnh với tham số URL & NBSP;Adding watermark to the image with a URL parameter
Sự kết luậnĐây là một bản tóm tắt nhanh chóng về những gì chúng ta đã học được ngày hôm nay. Chúng tôi đã xem xét ba cách khác nhau để thay đổi kích thước hình ảnh trong Python.
Việc sử dụng định hình lại là gì (Numpy Reshape (-1) Ý nghĩa.Trong numpy, -1 trong định hình lại (-1) đề cập đến một chiều không xác định mà hàm định hình lại () tính toán cho bạn.Nó giống như nói: Tôi sẽ để lại kích thước này cho hàm định hình lại () để xác định.Một trường hợp sử dụng phổ biến là làm phẳng một mảng lồng của một số phần tử không xác định thành một mảng 1D.to flatten a nested array of an unknown number of elements to a 1D array.
Thao tác hình ảnh trong Python là gì?Numpy.Numpy là một trong những thư viện cốt lõi trong lập trình Python và cung cấp hỗ trợ cho các mảng.Một hình ảnh về cơ bản là một mảng numpy tiêu chuẩn chứa pixel của các điểm dữ liệu.Do đó, bằng cách sử dụng các hoạt động Numpy cơ bản, chẳng hạn như cắt, mặt nạ và lập chỉ mục ưa thích, chúng ta có thể sửa đổi các giá trị pixel của hình ảnh.slicing, masking, and fancy indexing, we can modify the pixel values of an image. |