สารบัญ:

Face Aware OSD Photo Frame: 11 ขั้นตอน (พร้อมรูปภาพ)
Face Aware OSD Photo Frame: 11 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Face Aware OSD Photo Frame: 11 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Face Aware OSD Photo Frame: 11 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Photoshop EP.11 ใส่รูปภาพให้อยู่ในรูปร่าง ในไม่กี่ขั้นตอน 2024, กรกฎาคม
Anonim
กรอบรูป OSD รู้จำใบหน้า
กรอบรูป OSD รู้จำใบหน้า
กรอบรูป OSD รู้จำใบหน้า
กรอบรูป OSD รู้จำใบหน้า
กรอบรูป OSD รู้จำใบหน้า
กรอบรูป OSD รู้จำใบหน้า
Face Aware OSD กรอบรูป
Face Aware OSD กรอบรูป

คำแนะนำนี้แสดงวิธีการสร้างกรอบรูปด้วยการแสดงใบหน้าบนหน้าจอ (OSD)

OSD สามารถแสดงเวลา สภาพอากาศ หรือข้อมูลอินเทอร์เน็ตอื่น ๆ ที่คุณต้องการ

ขั้นตอนที่ 1: ทำไมต้องเป็น OSD Photo Frame

ทำไมต้อง OSD Photo Frame?
ทำไมต้อง OSD Photo Frame?
ทำไมต้อง OSD กรอบรูป?
ทำไมต้อง OSD กรอบรูป?

ฉันมีโครงการนาฬิการูปถ่าย 2 รายการที่ Instructables มาก่อน:

www.instructables.com/id/ESP32-Photo-Clock…

www.instructables.com/id/Arduino-BiJin-ToK…

ทั้งคู่ดึงภาพที่มีความงามและกระดานเวลาจากอินเทอร์เน็ตทุกนาทีและแสดงบน LCD

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

โครงการนี้กำลังสำรวจวิธีการทำ

ขั้นตอนที่ 2: ทำไมต้อง Face Aware

ทำไมต้อง Face Aware?
ทำไมต้อง Face Aware?
ทำไมต้อง Face Aware?
ทำไมต้อง Face Aware?
ทำไมต้อง Face Aware?
ทำไมต้อง Face Aware?
ทำไมต้อง Face Aware?
ทำไมต้อง Face Aware?

มาดูวิธีการเพิ่ม OSD ข้อมูลแบบทันทีให้กับภาพถ่ายกันก่อน:

  1. สุ่มเลือกรูปภาพจากโฟลเดอร์เฉพาะ
  2. ดึงเวลา
  3. ดึงข้อมูลทันทีจากอินเทอร์เน็ต
  4. วาดเวลาและข้อมูลทันทีบนภาพถ่าย

ขั้นตอนที่ 1-3 ตรงไปตรงมา ขั้นตอนที่ 4 ยังดูเรียบง่าย แต่การกำหนดตำแหน่งที่จะวาดข้อความนั้นไม่ใช่เรื่องง่าย

หากขนาดตัวอักษรเล็กเกินไป จะอ่านได้ยากในระยะที่เหมาะสม หากขนาดตัวอักษรใหญ่เกินไป ก็น่าจะครอบคลุมวัตถุในรูปภาพ โดยเฉพาะถ้าเป็นภาพพอร์ตเทรต ข้อความที่ปิดใบหน้าไม่เหมาะ

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

ขั้นตอนที่ 3: การออกแบบ 2 ชั้น

การออกแบบ 2 ชั้น
การออกแบบ 2 ชั้น

กระบวนการตรวจจับใบหน้าต้องใช้กำลังในการประมวลผล ในทางตรงกันข้าม กรอบรูปอาจมีน้ำหนักเบามาก ดังนั้นฉันจึงแบ่งออกเป็น 2 ชั้น:

เซิร์ฟเวอร์

เอ็นจิ้นรูปภาพที่รับรู้ใบหน้าคือเซิร์ฟเวอร์แอป Node.js สำหรับแต่ละคำขอ HTTP จะ:

  1. เลือกรูปภาพจากโฟลเดอร์รูปภาพแบบสุ่ม
  2. การตรวจจับใบหน้า
  3. กำหนดพื้นที่ใบหน้าหรือใบหน้าน้อยที่สุด
  4. ในระหว่างนี้ ให้ดึงข้อมูลสภาพอากาศหรือข้อมูลด่วนที่เป็นประโยชน์อื่นๆ จากอินเทอร์เน็ตทุกช่วงเวลา
  5. วาดเวลาและข้อมูลทันทีบนภาพถ่าย
  6. ส่งคืนรูปภาพด้วย OSD ในรูปแบบ JPEG เป็นการตอบสนอง

ลูกค้า

ลูกค้าสามารถเป็นเว็บเบราว์เซอร์ แอปเพล็ต หรืออุปกรณ์ IoT

เช่น. ESP32 dev boasrd พร้อมจอ LCD ขนาด 2-4 นิ้วเหมาะอย่างยิ่งสำหรับการวางบนเดสก์ท็อปเป็นกรอบรูปขนาดเล็ก

ขั้นตอนที่ 4: ตั้งค่าตัวเลือกเซิร์ฟเวอร์รูปภาพ 1: Docker Image

ตั้งค่าตัวเลือกเซิร์ฟเวอร์รูปภาพ 1: Docker Image
ตั้งค่าตัวเลือกเซิร์ฟเวอร์รูปภาพ 1: Docker Image
ตั้งค่าตัวเลือกเซิร์ฟเวอร์ภาพถ่าย 1: Docker Image
ตั้งค่าตัวเลือกเซิร์ฟเวอร์ภาพถ่าย 1: Docker Image

เพื่อความสะดวก ฉันได้สร้างอิมเมจ Docker ไว้ล่วงหน้าสำหรับเซิร์ฟเวอร์แอป OSD Node.js รูปภาพที่รับรู้ใบหน้า

ในกรณีที่คุณยังไม่ได้ติดตั้ง Docker โปรดปฏิบัติตามคู่มือเริ่มต้นใช้งาน Docker:

www.docker.com/get-started

จากนั้นรันคำสั่งต่อไปนี้: (แทนที่ /path/to/photo เป็นเส้นทางภาพถ่ายของคุณเอง)

นักเทียบท่า run -p 8080:8080 -v /path/to/photo:/app/photo moononournation/face-aware-photo-osd:1.0.1

ทดสอบโดยไปที่

คุณอาจพบว่าเวลาที่แสดงไม่อยู่ในเขตเวลาของคุณ:

docker run -p 8080:8080 -e TZ=Asia/Hong_Kong -v /path/to/photo:/app/photo moononournation/face-aware-photo-osd:1.0.1

หากคุณอาศัยอยู่ในฮ่องกงเช่นฉัน คุณสามารถเพิ่มข้อมูลสภาพอากาศของฮ่องกงได้:

docker run -p 8080:8080 -e TZ=Asia/Hong_Kong -e OSD=HK_Weather -v /path/to/photo:/app/photo moononournation/face-aware-photo-osd:1.0.1

หากคุณต้องการพัฒนาข้อมูล OSD ของคุณเอง:

mkdir -p ~/git

cd ~/git git clone https://github.com/moononournation/face-aware-photo-osd.git docker run -it -p 8080:8080 -e TZ=Asia/Hong_Kong -e OSD=HK_Weather -e DEBUG= Y -v /path/to/photo:/app/photo -v ~/git/face-aware-photo-osd/app.js:/app/app.js moononournation/face-aware-photo-osd:1.0. 1

แก้ไขฟังก์ชัน update_osd() ใน app.js เพื่อปรับแต่งข้อมูล OSD ของคุณเอง หลังการพัฒนา เพียงแค่ลบสภาพแวดล้อม DEBUG=Y ออกจากคำสั่งนักเทียบท่า

ขั้นตอนที่ 5: ตั้งค่าตัวเลือกเซิร์ฟเวอร์รูปภาพ 2: สร้างจากแหล่งที่มา

หากคุณคุ้นเคยกับ Node.js คุณสามารถสร้างเซิร์ฟเวอร์แอปจากแหล่งที่มาได้

รับแหล่งที่มา:

โคลน git

ติดตั้งแพ็คเกจ:

cd face-aware-ภาพถ่าย-osd

npm ติดตั้ง

สร้างโฟลเดอร์รูปภาพและคัดลอกรูปภาพของคุณเองไปยังโฟลเดอร์

เรียกใช้เซิร์ฟเวอร์แอป:

โหนด app.js

ขั้นตอนที่ 6: ตัวเลือกไคลเอนต์ 1: เว็บเบราว์เซอร์

ตัวเลือกไคลเอนต์ 1: เว็บเบราว์เซอร์
ตัวเลือกไคลเอนต์ 1: เว็บเบราว์เซอร์

เพียงเบราว์เซอร์ไปที่

หน้ามีสคริปต์อัตโนมัติโหลดภาพขนาดหน้าพอดีทุกนาที

ป.ล. หากคุณเรียกดูจากเครื่องอื่นที่ไม่ได้ใช้งานเซิร์ฟเวอร์แอป อย่าลืมเปลี่ยน localhost เป็นชื่อโฮสต์เซิร์ฟเวอร์แอปหรือที่อยู่ IP

ขั้นตอนที่ 7: ตัวเลือกไคลเอนต์ 2: ESP32 + LCD

ตัวเลือกไคลเอ็นต์ 2: ESP32 + LCD
ตัวเลือกไคลเอ็นต์ 2: ESP32 + LCD
ตัวเลือกไคลเอ็นต์ 2: ESP32 + LCD
ตัวเลือกไคลเอ็นต์ 2: ESP32 + LCD
ตัวเลือกไคลเอ็นต์ 2: ESP32 + LCD
ตัวเลือกไคลเอ็นต์ 2: ESP32 + LCD
ตัวเลือกไคลเอ็นต์ 2: ESP32 + LCD
ตัวเลือกไคลเอ็นต์ 2: ESP32 + LCD

ไคลเอนต์กรอบรูปสามารถทำได้ง่ายเหมือนบอร์ด ESP32 dev และ LCD

นี่คือฮาร์ดแวร์ที่จำเป็น:

บอร์ดพัฒนา ESP32

บอร์ดสำหรับนักพัฒนา ESP32 ใดๆ ก็น่าจะใช้ได้ คราวนี้ผมใช้บอร์ดชื่อ MH-ET LIVE

จอ LCD

Arduino_GFX ใด ๆ ที่รองรับ LCD คุณอาจพบจอแสดงผลที่รองรับในปัจจุบันที่ GitHub readme:

github.com/moononournation/Arduino_GFX

สายจัมเปอร์

สายจัมเปอร์บางสายขึ้นอยู่กับบอร์ด dev และเลย์เอาต์ของพิน LCD ในกรณีส่วนใหญ่สายจัมเปอร์ตัวเมียถึงตัวเมีย 6-9 ตัวก็เพียงพอแล้ว

ขาตั้งจอแอลซีดี

การสนับสนุนบางอย่างช่วยให้ LCD ตั้งตรง คราวนี้ฉันใช้ขาตั้งที่ใส่การ์ด

ขั้นตอนที่ 8: ESP32 + LCD Assembly

ESP32 + ชุดประกอบ LCD
ESP32 + ชุดประกอบ LCD
ESP32 + ชุดประกอบ LCD
ESP32 + ชุดประกอบ LCD
ESP32 + ชุดประกอบ LCD
ESP32 + ชุดประกอบ LCD

แนะนำให้ใช้ ESP32 ที่มีส่วนหัวของพินที่ด้านบน หากส่วนหัวของหมุดอยู่ด้านล่าง ให้วางบอร์ดคว่ำลง;>

เชื่อมต่อ ESP32 และ LCD ด้วยสายจัมเปอร์ จากนั้นใส่เข้ากับขาตั้ง

นี่คือตัวอย่างสรุปการเชื่อมต่อ:

ESP32 -> LCD

Vcc -> Vcc GND -> GND GPIO 5 -> CS GPIO 27 -> DC (ถ้ามี) GPIO 33 -> RST GPIO 18 -> SCK GPIO 19 -> MISO (ตัวเลือก) GPIO 22 -> LED (ถ้ามี) GPIO 23 -> MOSI / SDA

ขั้นตอนที่ 9: ซอฟต์แวร์ ESP32 + LCD

ซอฟต์แวร์ ESP32 + LCD
ซอฟต์แวร์ ESP32 + LCD

Arduino IDE

ดาวน์โหลดและติดตั้ง Arduino IDE หากคุณยังไม่ได้ทำ:

www.arduino.cc/en/main/software

รองรับ ESP32

ทำตามคำแนะนำในการติดตั้งเพื่อเพิ่มการรองรับ ESP32 หากคุณยังไม่ได้ดำเนินการ:

github.com/espressif/arduino-esp32

Arduino_GFX Library

ดาวน์โหลดไลบรารี Arduino_GFX ล่าสุด: (กด "Clone หรือ Download" -> "Download ZIP")

github.com/moononournation/Arduino_GFX

นำเข้าไลบรารีใน Arduino IDE (เมนู "ร่าง" ของ Arduino IDE -> "รวมไลบรารี" -> "เพิ่ม. ZIP Library" -> เลือกไฟล์ ZIP ที่ดาวน์โหลด)

รวบรวมและอัปโหลด

  1. เปิด Arduino IDE
  2. เปิดโค้ดตัวอย่าง ESP32PhotoFrame ("ไฟล์" -> "ตัวอย่าง" -> "ไลบรารี GFX สำหรับ Arduino" -> "WiFiPhotoFrame")
  3. กรอกการตั้งค่า WiFi AP ของคุณลงใน SSID_NAME และ SSID_PASSWORD
  4. แทนที่ชื่อโฮสต์เซิร์ฟเวอร์หรือ IP และพอร์ตของคุณใน HTTP_HOST และ
  5. กดปุ่ม "อัปโหลด" ของ Arduino IDE
  6. หากคุณพบว่าการวางแนวไม่ถูกต้อง ให้เปลี่ยนค่า "การหมุน" (0-3) ในรหัสคลาสใหม่

ขั้นตอนที่ 10: เพลิดเพลินกับภาพถ่าย

เพลิดเพลินกับภาพถ่าย!
เพลิดเพลินกับภาพถ่าย!

ได้เวลาวางกรอบรูป IoT ไว้บนเดสก์ท็อปแล้วสนุกได้เลย!

ขั้นตอนที่ 11: อะไรต่อไป?

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

แนะนำ: