Mục lục:

RoboPhoto - Trình tạo Mosaic cho Công chúng: 4 bước
RoboPhoto - Trình tạo Mosaic cho Công chúng: 4 bước

Video: RoboPhoto - Trình tạo Mosaic cho Công chúng: 4 bước

Video: RoboPhoto - Trình tạo Mosaic cho Công chúng: 4 bước
Video: Chibi Robo! Photo Finder Review - Caz (Nintendo 3DS, eShop) 2024, Tháng mười một
Anonim
Image
Image
RoboPhoto - một Máy tạo Mosaic cho Công chúng
RoboPhoto - một Máy tạo Mosaic cho Công chúng
RoboPhoto - một Máy tạo Mosaic cho Công chúng
RoboPhoto - một Máy tạo Mosaic cho Công chúng

RoboPhoto là một trình tạo photomosaic thời gian thực

RoboPhoto tạo ra một photomosaic của người dùng - trong khi bạn chờ đợi.

Bằng cách sử dụng các kỹ thuật kỹ thuật số hiện đại như xử lý hình ảnh, nhận dạng khuôn mặt và trí thông minh nhân tạo, RoboPhoto có khả năng tạo quang cảnh của tất cả khách truy cập đi ngang qua và nhấn nút của nó - trong thời gian thực.

Mỗi lần nhấn nút, một bức ảnh được chụp của người trong tầm tay. Ngay lập tức mỗi bức ảnh được quét và giải thích bởi RoboPhoto. Sau đó, phần mềm RoboPhoto sẽ thay đổi tất cả các hình ảnh riêng lẻ - để nó trở thành một phần của hình ảnh lớn hơn và sau đó in hình ảnh đã thay đổi này lên nhãn dán có gắn nhãn một tập hợp các tọa độ cho biết vị trí của từng ảnh trong hình ảnh lớn hơn đó. Sau đó, mỗi khách truy cập được yêu cầu đặt nhãn dán ảnh của riêng họ lên một khung vẽ lớn hơn chỉ chứa một lưới tương ứng.

Trong quá trình hoạt động của RoboPhoto, một hình ảnh mới sẽ được tạo. Một photomosaic bao gồm các bức ảnh riêng lẻ này sẽ bắt chước một ‘hình ảnh mục tiêu’ được xác định trước.

RoboPhoto cũng hoạt động ở chế độ một người dùng. Khi được định cấu hình theo cách này, RoboPhoto tạo ra một bức tranh khảm đầy đủ của một người dùng.

Quân nhu

  • PC chạy Windows 10 có cài đặt gói Visual Studio và IoT
  • Raspberry Pi 3B + với Microsoft Windows 10 IoT được cài đặt
  • Máy in nhãn màu (Brother VC-500W)
  • Một nút bấm lớn màu đỏ được gắn trên bệ để người dùng nhập liệu
  • Màn hình HDMI cho phản hồi của người dùng
  • Một máy ảnh Microsoft Xbox Kinect v2 - bị con trai tôi đánh cắp - để chụp ảnh
  • Một mạng (Wifi, LAN)
  • Một lưới mục tiêu. Một tờ giấy có in lưới trên đó có các tọa độ. Lưới giấy này được sử dụng như canvas, nơi du khách có thể dán ảnh của họ trên các tọa độ được chỉ định. Và vì vậy, cuối cùng chúng sẽ cùng nhau tạo thành kết quả cuối cùng: một photomosaic mới tuyệt đẹp.

Máy ảnh icrosoft Kinect 2.0 đã được sử dụng vì nó có thể chụp ảnh có chiều sâu. Tính năng này được sử dụng để tạo một màn hình xanh ảo trên từng bức ảnh riêng lẻ. Bằng cách này, RoboPhoto có thể sơn lại nền trên từng bức ảnh riêng lẻ để phù hợp với màu của một mảnh mục tiêu trong bức tranh ghép.

Bước 1: Cách nó hoạt động

Cách nó hoạt động
Cách nó hoạt động
Cách nó hoạt động
Cách nó hoạt động
Cách nó hoạt động
Cách nó hoạt động
Cách nó hoạt động
Cách nó hoạt động

RoboPhoto là một cài đặt bao gồm một bệ có nút lớn màu đỏ trên đó, một máy tính có gắn máy in nhãn và một thiết bị IoT nhỏ xử lý Giao diện Người dùng (màn hình và nút). Trong trường hợp của tôi: RaspBerry 3B +.

  1. RoboPhoto hoạt động trong một vị trí có thể truy cập công cộng và (sau khi bật) tự hoạt động. Khi chạy, những khách đi ngang qua được RoboPhoto khuyến khích nhấn vào nút lớn màu đỏ của nó.
  2. Bất cứ khi nào nhấn nút lớn màu đỏ đó, RoboPhoto sẽ chụp ảnh khách truy cập vừa nhấn nút bằng máy ảnh Kinect.
  3. Sau đó, RoboPhoto sẽ sử dụng A. I. và kỹ năng xử lý hình ảnh để thay đổi từng bức ảnh để khớp với một mảnh trong bức tranh ghép. Để đạt được điều này, RoboPhoto sẽ sửa lại nền của mỗi bức ảnh để phù hợp với màu của một mảnh mục tiêu trong một hình ảnh được tải trước. Sau khi chỉnh sửa, RoboPhoto in ảnh đã chỉnh sửa lên một hình dán cùng với một tập hợp các tọa độ giúp xác định vị trí của một hình dán này trong tranh ghép.

  4. Sau đó, người dùng được yêu cầu đặt nhãn dán trên trang mục tiêu khảm.
  5. Và do đó - sau khi nhiều người đã đến thăm - một tác phẩm nghệ thuật mới sẽ xuất hiện. Để tạo một bức tranh khảm, bạn sẽ cần rất nhiều mảnh riêng lẻ. Tôi đã có kết quả tốt khi chạy 600 mảnh

RoboPhoto cũng có thể hoạt động ở chế độ một người dùng.

Trong cấu hình này, RoboPhoto tạo ra một bức tranh khảm đầy đủ các bức ảnh đã chỉnh sửa ouf từ một người dùng duy nhất. Sau khi nhấn nút, RoboPhoto sẽ chụp khoảng hơn 600 bức ảnh khác nhau của người dùng, sau đó chỉnh sửa và sắp xếp tất cả chúng để tạo thành một bức tranh khảm mới duy nhất, được tạo sau một hình ảnh mục tiêu được chọn trước.

Bước 2: Lắp ráp phần cứng

Lắp ráp phần cứng
Lắp ráp phần cứng
Lắp ráp phần cứng
Lắp ráp phần cứng

Như trong hình trên, PC Win 10 đã được kết nối với camera Kinect. Kinect phải được kết nối bằng USB 3.0. Vào thời điểm tôi tạo RoboPhoto - không có Raspberry Pi nào với USB 3.0. *

PC cũng được sử dụng để xử lý việc in ấn với máy in nhãn đính kèm. Trong trường hợp của tôi là Brother VC-500W. Một máy in nhãn màu gia dụng khá rẻ. Tuy nhiên, nó rất chậm. Tốt hơn hãy sử dụng một chuyên gia nếu bạn có thể.

Nút lớn màu đỏ được gắn vào Raspberry Pi 3B +. Chỉ 4 dây được gắn vào GPIO. Đây là cách hàn duy nhất cần thiết được thực hiện trong Tài liệu hướng dẫn này. Pi cũng cung cấp phản hồi cho khách truy cập của chúng tôi bằng màn hình TFT 7 '' qua HDMI.

Để làm gọn gàng hơn, tôi đã xây một bệ gỗ chứa tất cả các thành phần này.

Bên cạnh bệ, dựa vào tường, người ta đặt một tờ giấy có lưới mục tiêu và tọa độ (A1 / A2). Bởi vì máy in nhãn tôi đã sử dụng tối đa bằng chiều rộng nhãn = 2, 5 cm, tất cả các ô vuông trong lưới này có kích thước 2, 5 cm x 2, 5 cm.

* Hôm nay, Raspberry Pi4 cung cấp USB3.0. Alse W10 có thể được chạy trên thiết bị. Vì vậy, về mặt lý thuyết có thể tạo RoboPhoto v2.0 mà không cần sử dụng PC. Có lẽ Covid '19 sẽ cung cấp cho tôi đủ thời gian để tự mình xuất bản một cuốn Sách có thể hướng dẫn như vậy sớm.

Bước 3: Viết mã

Viết mã
Viết mã
Viết mã
Viết mã

Mã số

RoboPhoto được tạo bằng VisualStudio như một giải pháp với hai dự án:

  1. Ứng dụng Windows Forms trên PC đang lưu trữ một máy chủ TCP và xử lý đầu vào Kinect
  2. Raspberry Pi 3B + lưu trữ một ứng dụng TCP trong ứng dụng UWP đứng đầu (được đặt làm ứng dụng khởi động) để xử lý các sự kiện nhấn Nút và cung cấp cho người dùng phản hồi thông qua màn hình TFT 7 '' của nó.

Trong sơ đồ trên, tôi đã cố gắng cung cấp cho bạn ý tưởng về những gì phần mềm của tôi đang làm. Visual Studio mà tôi đã viết để tạo giải pháp RoboPhoto này (hoàn toàn hoạt động 100%) được cung cấp cùng với Giải pháp có thể hướng dẫn này. Tuy nhiên, tôi phải cảnh báo với mọi người về việc giải mã tệp này: Mã tôi viết không đẹp và thường bị ràng buộc với máy tính phát triển của tôi. Vì vậy, tôi khuyến khích mọi người tạo ra một giải pháp tốt hơn, đẹp hơn và ổn định hơn.

1drv.ms/u/s!Aq7eBym1bHDKkKcigYzt8az9WEYOOg…

Mạng

Trong mã ví dụ, mã của Pi được triển khai thông qua Visual Studio tới một Địa chỉ IP trong mạng của tôi. Bạn có thể nên thay đổi điều này để phù hợp với của riêng bạn. Để thực hiện việc này - bấm chuột phải vào dự án máy khách ARM sau khi mở giải pháp trong Visual Studio, sau đó chọn thuộc tính và thay đổi giá trị Máy từ xa thành Địa chỉ IP của Pi của riêng bạn. Ngoài ra, bạn cần cho phép lưu lượng truy cập đi từ máy khách đến máy chủ trên cổng 8123 trong Tường lửa của Windows trên máy chủ (PC). Nếu bạn chạy giải pháp từ Visual Studio, nó sẽ yêu cầu bạn thực hiện giải pháp đó cho U.

Trong khi viết mã, tôi đã gặp rất nhiều khó khăn để W32 & UWP giao tiếp đúng cách. Tôi đã làm cho nó hoạt động bằng cách sử dụng hai lớp riêng biệt trong máy khách và máy chủ: resp MyEchoClient.cs (trong máy khách ARM) và ConnectionClient.cs (hanlding kết nối máy khách trong máy chủ).

Tệp khảm - lớp tùy chỉnh

RoboPhoto tạo ảnh ghép để bắt chước hình ảnh mục tiêu. Ảnh đích này và tất cả các ảnh riêng lẻ cùng nhau tạo nên bức tranh khảm, cũng như một số thuộc tính khác của mỗi RoboPhoto được lưu trữ trong các tệp trong hệ thống tệp. Mã đi kèm của tôi sử dụng một tập hợp các tệp & thư mục trong thư mục c: / tmp / MosaicBuilder. Trong thư mục này, mã sẽ đọc tất cả các thư mục con có tên thư mục bắt đầu bằng [prj_] dưới dạng thư mục dự án khảm. Trong tất cả các thư mục [prj_] này, nó sẽ cố gắng mở một tệp dự án có tên [_projectdata.txt] chứa tất cả thông tin cần thiết cho mỗi dự án.

Một tệp dự án như vậy bao gồm:

  1. đường dẫn đầy đủ & tên tệp của hình ảnh đích của dự án này
  2. đường dẫn đầy đủ nơi lưu trữ các bức ảnh (phần) riêng lẻ của dự án này
  3. Số cột mà tranh khảm sẽ chứa
  4. Số hàng mà tranh khảm sẽ chứa

Các dự án mẫu được cung cấp trong tệp zip: / slnBBMosaic2 / wfMosaicServerKinect / bin / x86 / Debug / prj_xxx

Trong mã máy chủ C #, tất cả việc xử lý khảm được thực hiện thông qua một lớp tùy chỉnh: BBMosaicProject.cs

Microsoft Kinect v2.0 - Màn hình xanh

Để chỉ chụp ảnh bất kỳ máy ảnh nào sẽ làm được. Nhưng tôi đã sử dụng Microsoft Kinect v2.0 để kết hợp hình ảnh màu và hình ảnh chiều sâu. Bằng cách này, có thể tạo hiệu ứng màn hình xanh. Nền trong tất cả các ảnh màu nhận được từ Kinect sẽ được thay thế bằng bề mặt màu xanh lá cây đồng nhất (BBBackgroundRemovalTool.cs).

Tham chiếu đến Microsoft. Kinect đã được thêm vào serverproject.

EMGU

Vì chúng ta cần chắc chắn rằng một người đang ở trên bức ảnh được chụp khi nhấn nút, khả năng nhận dạng khuôn mặt đã được thêm vào RoboPhoto.

www.nuget.org/packages/Emgu. CV/3.4.3.3016

Chỉ khi một người ở trong ảnh, màn hình xanh trong ảnh này sẽ được thay thế bằng một bề mặt có màu đồng nhất, với các mã màu bằng màu chuẩn của mục tiêu trong bức tranh khảm-tương-tư này sẽ trở thành.

Bước 4: Cảm ơn bạn

Cảm ơn
Cảm ơn

Cảm ơn bạn đã đọc Hướng dẫn của tôi. Đây là lần đầu tiên của tôi. Tôi hy vọng bạn thích nó.

Đề xuất: