สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: มันทำงานอย่างไร
- ขั้นตอนที่ 2: การประกอบฮาร์ดแวร์
- ขั้นตอนที่ 3: การเขียนโค้ด
- ขั้นตอนที่ 4: ขอบคุณ
วีดีโอ: RoboPhoto - โปรแกรมสร้างภาพโมเสคสำหรับสาธารณะ: 4 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
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+
- RoboPhoto ทำงานภายในสถานที่สาธารณะที่เข้าถึงได้ และ (หลังจากเปิดเครื่องแล้ว) ดำเนินการด้วยตนเอง เมื่อวิ่ง RoboPhoto แนะนำให้ผู้เข้าชมที่ผ่านไปมากดปุ่มสีแดงขนาดใหญ่
- ทุกครั้งที่กดปุ่มสีแดงขนาดใหญ่ RoboPhoto จะถ่ายรูปแขกที่เพิ่งกดปุ่มด้วยกล้อง Kinect
-
จากนั้น RoboPhoto จะใช้ A. I. ขั้นสูง และทักษะการประมวลผลภาพเพื่อปรับเปลี่ยนภาพถ่ายแต่ละภาพให้เข้ากับชิ้นส่วนภายในภาพโมเสค เพื่อให้บรรลุสิ่งนี้ RoboPhoto จะทาสีพื้นหลังของภาพถ่ายแต่ละภาพใหม่เพื่อให้ตรงกับสีของชิ้นงานภายในภาพที่โหลดไว้ล่วงหน้า หลังจากการแก้ไข RoboPhoto จะพิมพ์ภาพที่แก้ไขแล้วลงบนสติกเกอร์พร้อมกับชุดพิกัดที่ชี้ตำแหน่งของสติกเกอร์นี้ภายในภาพโมเสค
- จากนั้นผู้ใช้จะถูกขอให้วางสติกเกอร์บนแผ่นเป้าหมายโมเสค
- และด้วยเหตุนี้ หลังจากที่ผู้คนจำนวนมากได้มาเยือนแล้ว งานศิลปะชิ้นใหม่ก็จะปรากฏขึ้น ในการสร้างภาพโมเสค คุณจะต้องใช้ชิ้นส่วนแต่ละชิ้นเป็นจำนวนมาก ฉันได้ผลลัพธ์ที่ดี 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 เป็นโซลูชันที่มีสองโปรเจ็กต์:
- แอปพลิเคชัน Windows Forms บนพีซีกำลังโฮสต์เซิร์ฟเวอร์ TCP และจัดการอินพุต Kinect
- 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] ที่มีข้อมูลทั้งหมดที่จำเป็นสำหรับแต่ละโครงการ
ไฟล์โครงการดังกล่าวประกอบด้วย:
- เส้นทางแบบเต็ม & ชื่อไฟล์ของภาพเป้าหมายของโครงการนี้
- เส้นทางแบบเต็มที่จัดเก็บภาพถ่ายแต่ละชิ้น (ชิ้นส่วน) ของโครงการนี้
- จำนวนคอลัมน์ที่โมเสคจะมี
- จำนวนแถวที่ภาพโมเสคจะมี
ตัวอย่างโปรเจ็กต์มีอยู่ในไฟล์ 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: ขอบคุณ
ขอบคุณที่อ่านคำแนะนำของฉัน นี่เป็นครั้งแรกของฉัน ฉันหวังว่าคุณจะสนุกกับมัน
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน
เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง