สวัสดีครับทุกท่าน ปฎิเสธไม่ได้เลยนะครับว่าทุกวันนี้เราใช้เวลากับคอมพิวเตอร์ หรือหน้าจอเยอะขึ้น ซึ่งทำให้สายตาเราต้องทำงานหนักด้วย

เมื่อนึกได้ผมก็เลยลองคิดดูครับว่าเราควรจะใช้ทักษะการเขียนโปรแกรมที่เรามี(เพียงน้อยนิด 555) ทำให้ชีวิตเราง่ายขึ้น ผมเลยลองเขียนโปรแกรมที่จะช่วยตรวจจับว่าเรามองจอไปกี่นาทีแล้ว แล้วจะเตือนเราเมื่อเราควรพัก

เพื่อคิดหน้าตาโปรแกรมคร่าวๆได้แล้วก็ลองทำดูเลยครับ ไลบรารี่ที่เราต้องการก็มี

  • OpenCV ไว้สำหรับตรวจจับตาว่ากำลังมองจออยู่หรือไม่
  • time ไลบรารี่พื้นฐานเอาไว้เพื่อจับเวลา
  • EasyGUI เอาไว้สำหรับทำส่วนประสานงานแบบกราฟฟิค (กูอี้นั่นเอง)

เริ่มต้นกันโดยการติดตั้งไลบรารี่ก่อน ถ้าใครติดตั้งไว้แล้วก็ข้ามไปได้เลยครับ

การติดตั้ง OpenCV ถ้าใครใช้ Windows แล้วลองใช้ pip ติดตั้ง จะดูเหมือนว่ามันไม่สามารถทำงานได้เท่าไร ผมแนะนำให้โหลดไฟล์ wheel จากเว็บนี้ครับ

http://www.lfd.uci.edu/~gohlke/pythonlibs/

เป็นเว็บที่รวมไฟล์ wheel ของไลบรารี่ต่างๆไว้ กด Ctrl +f เพื่อหา opencv เลยครับ

จากนั้นก็กดโหลดในรุ่นที่เราใช้ กรณีของผมก็ cp-35-cp35m-winamd64.whl

เมื่อโหลดเสร็จเราสามารถติดตั้งโดยใช้คำสั่ง

pip install <ชื่อไฟล์ที่ดาวน์โหลดมา>

จากนั้นลองเปิด Command shell (cmd, bash, terminal แล้วแต่ระบบปฎิบัติการ) พิมพ์ python แล้วลอง import cv2 ดูครับ ถ้าได้แสดงว่าเราติดตั้งเสร็จแล้ว

สำหรับการติดตั้ง EasyGUI แค่ใช้ pip ก็พอแล้วครับ โดยใช้คำสั่ง

pip install easygui

เมื่อติดตั้งเสร็จแล้วก็มาเขียนโปรแกรมกันเลย!

import ไลบรารี่ที่ใช้มาก่อน

เราจะใช้ Haar Cascade ในการตรวจจับว่าเจอตาของเราอยู่ในจอมั้ยด้วยครับ จึงต้องมีการประกาศ Haar Cascade ที่ใช้

haar cascade ที่ใช้ (ใช้ tree_eyeglasses ด้วยเผื่อใครใส่แว่นนะครับ :D)
เปิดกล้อง แล้วก็ตั้งค่าเกี่ยวกับตัวแปร
อันนี้คือลูปหลักของเรา

เริ่มลูปเลยเราจะเช็คว่า elapse (เวลาที่ผ่านไป) ต้องน้อยกว่า 20 นาที ถ้าใช่ก็จะเริ่มตรวจจับว่ามีตาของเราอยู่ในภาพที่กล้องเห็นมั้ย (แต่ตาต้องอยู่ในใบหน้า!! จึงต้องตรวจจับหาหน้าของเราก่อน) เมื่อตรวจเจอแล้วเราจะให้เวลาที่ผ่านไปในแต่ละเฟรมเท่ากับ (เวลาปัจจุบัน -last_time หรือเวลาเริ่มต้นของลูปนั้นๆ) แต่ถ้าเวลาที่ผ่านไปเกิน 20 นาทีจะมีหน้าต่างขึ้นมาบอกให้พักสายตาหลังจากนั้นก็จะหยุดโปรแกรมให้พักสายตา 20 วินาที แล้วจึงตั้งค่า elapse และ last_time ใหม่

นี่แหละครับคือโปรแกรมทั้งหมดแล้วเราก็มาลองใช้กันเลยนะครับ

อ๊ะ เกิน 20 นาทีแล้วต้องพักสายตาหน่อยแล้วเรา

วิธีการรักษาสายตาง่ายๆอีกวิธีนึงคือปรับแสงสีฟ้าในจอให้ลดลงครับ ใครใช้จอคอมก็ปรับลดลงได้ที่จอโดยตรง แต่ใครใช้โน้ตบุ๊คสามารถปรับลดลงได้โดยใช้โปรแกรม f.lux หรือถ้าใครใช้ windows 10 creator update ขึ้นไปก็มี night mode รองรับครับ

สำหรับบทความนี้ก็จบลงเพียงเท่านี้ครับขอบคุณทุกท่านมากๆนะครับ :D

ใครชอบก็รบกวนช่วยกด follow หรือ recommend ให้หน่อยนะครับ :)

https://pastebin.com/Jud8h5Jc เผื่อใครอยากนำไปใช้ครับ

# อันนี้ตัวแก้ให้กิน resource น้อยลงครับ https://pastebin.com/2JwKS6AM