สารบัญ:

RoboPhoto - โปรแกรมสร้างภาพโมเสคสำหรับสาธารณะ: 4 ขั้นตอน
RoboPhoto - โปรแกรมสร้างภาพโมเสคสำหรับสาธารณะ: 4 ขั้นตอน

วีดีโอ: RoboPhoto - โปรแกรมสร้างภาพโมเสคสำหรับสาธารณะ: 4 ขั้นตอน

วีดีโอ: RoboPhoto - โปรแกรมสร้างภาพโมเสคสำหรับสาธารณะ: 4 ขั้นตอน
วีดีโอ: Improve your projects with the Mosaic Editor - Pix4Dmapper Video Tutorial 6 2024, พฤศจิกายน
Anonim
Image
Image
RoboPhoto - โปรแกรมสร้างภาพโมเสคสำหรับสาธารณะ
RoboPhoto - โปรแกรมสร้างภาพโมเสคสำหรับสาธารณะ
RoboPhoto - เครื่องมือสร้างภาพโมเสคสำหรับสาธารณะ
RoboPhoto - เครื่องมือสร้างภาพโมเสคสำหรับสาธารณะ

RoboPhoto เป็นเครื่องกำเนิดภาพโมเสกแบบเรียลไทม์

RoboPhoto สร้างภาพโมเสกของผู้ใช้ – ในขณะที่คุณรอ

ด้วยการใช้เทคนิคดิจิทัลสมัยใหม่ เช่น การประมวลผลภาพ การจดจำใบหน้า และปัญญาประดิษฐ์ RoboPhoto สามารถสร้างภาพโมเสกของผู้เยี่ยมชมทุกคนที่เดินผ่านมาและกดปุ่มได้แบบเรียลไทม์

ทุกครั้งที่กดปุ่ม ระบบจะถ่ายภาพบุคคลที่อยู่ในมือ ภาพแต่ละภาพจะถูกสแกนและตีความโดย RoboPhoto ในทันที จากนั้นซอฟต์แวร์ RoboPhoto จะแก้ไขรูปภาพแต่ละภาพทั้งหมด เพื่อให้กลายเป็นส่วนหนึ่งของรูปภาพขนาดใหญ่ จากนั้นพิมพ์รูปภาพที่แก้ไขแล้วนี้ลงบนสติกเกอร์ที่ติดป้ายกำกับด้วยชุดพิกัดที่ระบุตำแหน่งของรูปภาพแต่ละรูปภายในรูปภาพขนาดใหญ่นั้น จากนั้นผู้เยี่ยมชมแต่ละคนจะถูกขอให้วางสติกเกอร์รูปถ่ายของตนเองลงบนผืนผ้าใบที่ใหญ่ขึ้นโดยมีเพียงตารางที่สอดคล้องกันเท่านั้น

ระหว่างการทำงานของ RoboPhoto ภาพใหม่จะถูกสร้างขึ้น photomosaic ประกอบด้วยภาพถ่ายบุคคลเหล่านี้จะเลียนแบบ 'ภาพเป้าหมาย' ที่กำหนดไว้ล่วงหน้า

RoboPhoto ยังทำงานในโหมดผู้ใช้คนเดียว เมื่อกำหนดค่าด้วยวิธีนี้ RoboPhoto จะสร้างภาพโมเสคแบบเต็มของผู้ใช้รายเดียว

เสบียง

  • พีซี Windows 10 ที่ติดตั้งแพ็คเกจ Visual Studio และ IoT
  • Raspberry Pi 3B+ พร้อม Microsoft Windows 10 IoT ติดตั้งอยู่
  • เครื่องพิมพ์ฉลากสี (Brother VC-500W)
  • ปุ่มกดสีแดงขนาดใหญ่ติดตั้งอยู่บนแท่นสำหรับการป้อนข้อมูลของผู้ใช้
  • หน้าจอ HDMI สำหรับความคิดเห็นของผู้ใช้
  • กล้อง Microsoft Xbox Kinect v2 – ถูกขโมยจากลูกชายของฉัน- เพื่อถ่ายรูป
  • เครือข่าย (Wifi, LAN)
  • ตารางเป้าหมาย แผ่นกระดาษที่มีกริดพิมพ์อยู่ -เต็มไปด้วยพิกัด ตารางกระดาษนี้ใช้เป็นผ้าใบที่ผู้เข้าชมสามารถติดรูปถ่ายของตนบนพิกัดที่กำหนดได้ และในที่สุดพวกมันก็จะรวมกันเป็นผลลัพธ์: photomosaic ใหม่ที่สวยงาม

มีการใช้กล้อง icrosoft Kinect 2.0 เนื่องจากสามารถถ่ายภาพในเชิงลึกได้ ฟีเจอร์นี้ใช้เพื่อสร้างกรีนสกรีนเสมือนจริงในภาพถ่ายแต่ละภาพ วิธีนี้ RoboPhoto สามารถทาสีพื้นหลังบนภาพถ่ายแต่ละภาพใหม่เพื่อให้เข้ากับสีของชิ้นงานเป้าหมายภายในภาพโมเสคที่จะกลายเป็น

ขั้นตอนที่ 1: มันทำงานอย่างไร

มันทำงานอย่างไร
มันทำงานอย่างไร
มันทำงานอย่างไร
มันทำงานอย่างไร
มันทำงานอย่างไร
มันทำงานอย่างไร
มันทำงานอย่างไร
มันทำงานอย่างไร

RoboPhoto คือการติดตั้งที่ประกอบด้วยแท่นที่มีปุ่มสีแดงขนาดใหญ่ คอมพิวเตอร์ที่ติดเครื่องพิมพ์ฉลาก และอุปกรณ์ IoT ขนาดเล็กที่จัดการส่วนต่อประสานผู้ใช้ (หน้าจอและปุ่ม) ในกรณีของฉัน: RaspBerry 3B+

  1. RoboPhoto ทำงานภายในสถานที่สาธารณะที่เข้าถึงได้ และ (หลังจากเปิดเครื่องแล้ว) ดำเนินการด้วยตนเอง เมื่อวิ่ง RoboPhoto แนะนำให้ผู้เข้าชมที่ผ่านไปมากดปุ่มสีแดงขนาดใหญ่
  2. ทุกครั้งที่กดปุ่มสีแดงขนาดใหญ่ RoboPhoto จะถ่ายรูปแขกที่เพิ่งกดปุ่มด้วยกล้อง Kinect
  3. จากนั้น RoboPhoto จะใช้ A. I. ขั้นสูง และทักษะการประมวลผลภาพเพื่อปรับเปลี่ยนภาพถ่ายแต่ละภาพให้เข้ากับชิ้นส่วนภายในภาพโมเสค เพื่อให้บรรลุสิ่งนี้ RoboPhoto จะทาสีพื้นหลังของภาพถ่ายแต่ละภาพใหม่เพื่อให้ตรงกับสีของชิ้นงานภายในภาพที่โหลดไว้ล่วงหน้า หลังจากการแก้ไข RoboPhoto จะพิมพ์ภาพที่แก้ไขแล้วลงบนสติกเกอร์พร้อมกับชุดพิกัดที่ชี้ตำแหน่งของสติกเกอร์นี้ภายในภาพโมเสค

  4. จากนั้นผู้ใช้จะถูกขอให้วางสติกเกอร์บนแผ่นเป้าหมายโมเสค
  5. และด้วยเหตุนี้ หลังจากที่ผู้คนจำนวนมากได้มาเยือนแล้ว งานศิลปะชิ้นใหม่ก็จะปรากฏขึ้น ในการสร้างภาพโมเสค คุณจะต้องใช้ชิ้นส่วนแต่ละชิ้นเป็นจำนวนมาก ฉันได้ผลลัพธ์ที่ดี 600 ชิ้น

RoboPhoto ยังสามารถทำงานในโหมดผู้ใช้คนเดียว

ในการกำหนดค่านี้ RoboPhoto จะสร้างภาพโมเสคเต็มรูปแบบของภาพถ่ายที่แก้ไขโดยผู้ใช้คนเดียว หลังจากกดปุ่ม RoboPhoto จะถ่ายภาพของผู้ใช้ประมาณ >600 ภาพ จากนั้นแก้ไขและจัดเรียงภาพทั้งหมดให้เป็นภาพโมเสคใหม่เพียงภาพเดียว ซึ่งสร้างขึ้นหลังจากภาพเป้าหมายที่เลือกไว้ล่วงหน้า

ขั้นตอนที่ 2: การประกอบฮาร์ดแวร์

การประกอบฮาร์ดแวร์
การประกอบฮาร์ดแวร์
การประกอบฮาร์ดแวร์
การประกอบฮาร์ดแวร์

ดังที่แสดงในภาพด้านบน พีซี Win 10 เชื่อมต่อกับกล้อง Kinect Kinect ต้องเชื่อมต่อด้วย USB 3.0 ในขณะที่ฉันสร้าง RoboPhoto - ไม่มี Raspberry Pi พร้อม USB 3.0*

พีซียังใช้เพื่อจัดการการพิมพ์ไปยังเครื่องพิมพ์ฉลากที่แนบมาด้วย ในกรณีของฉันคือ Brother VC-500W เครื่องพิมพ์ฉลากสีในครัวเรือนราคาถูก อย่างไรก็ตามมันช้ามาก ใช้มืออาชีพดีกว่าถ้าทำได้

ปุ่ม Big Red ติดอยู่กับ Raspberry Pi 3B+ ต่อสายไฟ 4 เส้นเข้ากับ GPIO เท่านั้น นี่เป็นการบัดกรีเพียงอย่างเดียวที่จำเป็นในคำแนะนำนี้ Pi ยังให้ฟีดแบ็คแก่ผู้เยี่ยมชมของเราด้วยหน้าจอ TFT ขนาด 7 นิ้วผ่าน HDMI

ในการจัดระเบียบ ฉันสร้างฐานไม้ที่มีส่วนประกอบทั้งหมดเหล่านี้

ถัดจากแท่นวางกระดาษแผ่นหนึ่งที่มีกริดเป้าหมายและพิกัด (A1/A2) เนื่องจากเครื่องพิมพ์ฉลากที่ฉันใช้สูงสุดโดยความกว้างฉลาก = 2, 5 ซม. สี่เหลี่ยมทั้งหมดในตารางนี้มีขนาด 2, 5 ซม. x 2, 5 ซม.

*วันนี้ Raspberry Pi4 มี USB3.0 สามารถเรียกใช้ W10 อื่นบนอุปกรณ์ได้ ดังนั้นจึงควรสร้าง RoboPhoto v2.0 ในทางทฤษฎีโดยไม่ต้องใช้พีซี บางที Covid '19 อาจทำให้ฉันมีเวลามากพอที่จะเผยแพร่คำแนะนำดังกล่าวได้ในไม่ช้า

ขั้นตอนที่ 3: การเขียนโค้ด

การเขียนโค้ด
การเขียนโค้ด
การเขียนโค้ด
การเขียนโค้ด

รหัส

RoboPhoto ถูกสร้างขึ้นด้วย VisualStudio เป็นโซลูชันที่มีสองโปรเจ็กต์:

  1. แอปพลิเคชัน Windows Forms บนพีซีกำลังโฮสต์เซิร์ฟเวอร์ TCP และจัดการอินพุต Kinect
  2. Raspberry Pi 3B+ ที่โฮสต์ไคลเอนต์ TCP ภายในแอปพลิเคชันส่วนหัว UWP (ตั้งค่าเป็นแอปเริ่มต้น) เพื่อจัดการเหตุการณ์การกดปุ่มและให้คำติชมแก่ผู้ใช้ผ่านหน้าจอ TFT ขนาด 7 นิ้ว

ในไดอะแกรมด้านบน ฉันได้พยายามที่จะให้แนวคิดแก่คุณว่าซอฟต์ของฉันกำลังทำอะไรอยู่ Visual Studio ที่ฉันเขียนเพื่อสร้างสิ่งนี้ (ใช้งานได้ 100%) โซลูชัน RoboPhoto มีให้พร้อมกับคำแนะนำนี้ อย่างไรก็ตาม ฉันต้องเตือนทุกคนที่ดาวน์โหลดไฟล์นี้: รหัสที่ฉันเขียนนั้นยังห่างไกลจากความสวยและมักจะเชื่อมโยงกับ dev-PC ของฉัน ดังนั้นฉันจึงสนับสนุนให้ทุกคนสร้างโซลูชันที่ดีกว่า ดีกว่า และมั่นคงกว่า

1drv.ms/u/s!Aq7eBym1bHDKkKcigYzt8az9WEYOg…

เครือข่าย

ในโค้ดตัวอย่าง รหัสของ Pi ถูกปรับใช้ผ่าน Visual Studio ไปยัง IPAddress ในเครือข่ายของฉัน คุณน่าจะเปลี่ยนสิ่งนี้ให้เหมาะกับตัวคุณเอง เมื่อต้องการทำสิ่งนี้ - คลิกขวาที่โปรเจ็กต์ไคลเอนต์ ARM หลังจากเปิดโซลูชันใน Visual Studio จากนั้นเลือกคุณสมบัติและแปลงค่า Remote machine ไปยัง IPAddress ของ Pi ของคุณเอง นอกจากนี้ คุณต้องอนุญาตการรับส่งข้อมูลจากไคลเอนต์ไปยังเซิร์ฟเวอร์บนพอร์ต 8123 ภายในไฟร์วอลล์ Windows บนเซิร์ฟเวอร์ (PC) หากคุณเรียกใช้โซลูชันจาก Visual Studio ควรขอให้คุณทำเพื่อ U

ขณะเข้ารหัส ฉันมีปัญหามากมายในการทำให้ W32 & UWP สามารถสื่อสารได้อย่างถูกต้อง ฉันทำให้มันใช้งานได้โดยใช้สองคลาสแยกกันในไคลเอนต์ & เซิร์ฟเวอร์: resp MyEchoClient.cs (ในไคลเอนต์ ARM) และ ConnectionClient.cs (จัดการการเชื่อมต่อไคลเอนต์ในเซิร์ฟเวอร์)

ไฟล์โมเสค - คลาสที่กำหนดเอง

RoboPhoto สร้างภาพโมเสคเพื่อเลียนแบบภาพเป้าหมาย รูปภาพเป้าหมายนี้ และภาพถ่ายแต่ละภาพที่รวมกันเป็นภาพโมเสค รวมถึงคุณสมบัติอื่นๆ ของ RoboPhoto แต่ละรายการถูกจัดเก็บไว้ในไฟล์ในระบบไฟล์ รหัสที่มาพร้อมกับของฉันใช้ชุดของไฟล์และโฟลเดอร์ในไดเรกทอรี c:\tmp\MosaicBuilder ภายในโฟลเดอร์นี้ โค้ดจะอ่านโฟลเดอร์ย่อยทั้งหมดที่มีชื่อโฟลเดอร์ที่ขึ้นต้นด้วย [prj_] เป็นโฟลเดอร์โครงการโมเสค ภายในโฟลเดอร์ [prj_] ทั้งหมดนี้ จะพยายามเปิดไฟล์โครงการชื่อ [_projectdata.txt] ที่มีข้อมูลทั้งหมดที่จำเป็นสำหรับแต่ละโครงการ

ไฟล์โครงการดังกล่าวประกอบด้วย:

  1. เส้นทางแบบเต็ม & ชื่อไฟล์ของภาพเป้าหมายของโครงการนี้
  2. เส้นทางแบบเต็มที่จัดเก็บภาพถ่ายแต่ละชิ้น (ชิ้นส่วน) ของโครงการนี้
  3. จำนวนคอลัมน์ที่โมเสคจะมี
  4. จำนวนแถวที่ภาพโมเสคจะมี

ตัวอย่างโปรเจ็กต์มีอยู่ในไฟล์ zip: \slnBBMosaic2\wfMosaicServerKinect\bin\x86\Debug\prj_xxx

ในโค้ดเซิร์ฟเวอร์ C# การจัดการโมเสกทั้งหมดทำได้ผ่านคลาสที่กำหนดเอง: BBMosaicProject.cs

Microsoft Kinect v2.0 - หน้าจอสีเขียว

แค่ถ่ายรูปกล้องอะไรก็ได้ แต่ฉันใช้ Microsoft Kinect v2.0 เพื่อรวมภาพสีและภาพความลึก วิธีนี้สามารถสร้างเอฟเฟกต์หน้าจอสีเขียวได้ พื้นหลังในภาพสีทั้งหมดที่ได้รับจาก Kinect จะถูกแทนที่ด้วยพื้นผิวสีเขียวที่สม่ำเสมอ (BBBackgroundRemovalTool.cs)

มีการเพิ่มการอ้างอิงถึง Microsoft. Kinect ไปยังโครงการเซิร์ฟเวอร์

EMGU

เนื่องจากเราต้องแน่ใจว่ามีคนอยู่บนภาพถ่ายที่ถ่ายเมื่อกดปุ่ม ความสามารถในการจดจำใบหน้าจึงถูกเพิ่มเข้ามาใน RoboPhoto

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

เฉพาะเมื่อมีบุคคลอยู่ในรูปภาพ กรีนสกรีนในรูปภาพนี้จะถูกแทนที่ด้วยพื้นผิวที่มีสีสม่ำเสมอ โดยมีรหัสสีเท่ากับสีเฉลี่ยของชิ้นงานในภาพโมเสคที่จะกลายเป็นภาพนี้

ขั้นตอนที่ 4: ขอบคุณ

ขอบคุณ
ขอบคุณ

ขอบคุณที่อ่านคำแนะนำของฉัน นี่เป็นครั้งแรกของฉัน ฉันหวังว่าคุณจะสนุกกับมัน

แนะนำ: