สวัสดีครับทุกท่าน ปฎิเสธไม่ได้เลยนะครับว่าทุกวันนี้เราใช้เวลากับคอมพิวเตอร์ หรือหน้าจอเยอะขึ้น ซึ่งทำให้สายตาเราต้องทำงานหนักด้วย
เมื่อนึกได้ผมก็เลยลองคิดดูครับว่าเราควรจะใช้ทักษะการเขียนโปรแกรมที่เรามี(เพียงน้อยนิด 555) ทำให้ชีวิตเราง่ายขึ้น ผมเลยลองเขียนโปรแกรมที่จะช่วยตรวจจับว่าเรามองจอไปกี่นาทีแล้ว แล้วจะเตือนเราเมื่อเราควรพัก
เพื่อคิดหน้าตาโปรแกรมคร่าวๆได้แล้วก็ลองทำดูเลยครับ ไลบรารี่ที่เราต้องการก็มี
- OpenCV ไว้สำหรับตรวจจับตาว่ากำลังมองจออยู่หรือไม่
- time ไลบรารี่พื้นฐานเอาไว้เพื่อจับเวลา
- EasyGUI เอาไว้สำหรับทำส่วนประสานงานแบบกราฟฟิค (กูอี้นั่นเอง)
เริ่มต้นกันโดยการติดตั้งไลบรารี่ก่อน ถ้าใครติดตั้งไว้แล้วก็ข้ามไปได้เลยครับ
การติดตั้ง OpenCV ถ้าใครใช้ Windows แล้วลองใช้ pip ติดตั้ง จะดูเหมือนว่ามันไม่สามารถทำงานได้เท่าไร ผมแนะนำให้โหลดไฟล์ wheel จากเว็บนี้ครับ
![](https://nonthakon-blog.fly.dev/content/images/max/800/1-92llq8nflivdimjhpurbma.png)
เป็นเว็บที่รวมไฟล์ wheel ของไลบรารี่ต่างๆไว้ กด Ctrl +f เพื่อหา opencv เลยครับ
![](https://nonthakon-blog.fly.dev/content/images/max/800/1-qww0nirbmjavzebz5hhgtq.png)
เมื่อโหลดเสร็จเราสามารถติดตั้งโดยใช้คำสั่ง
pip install <ชื่อไฟล์ที่ดาวน์โหลดมา>
จากนั้นลองเปิด Command shell (cmd, bash, terminal แล้วแต่ระบบปฎิบัติการ) พิมพ์ python แล้วลอง import cv2 ดูครับ ถ้าได้แสดงว่าเราติดตั้งเสร็จแล้ว
สำหรับการติดตั้ง EasyGUI แค่ใช้ pip ก็พอแล้วครับ โดยใช้คำสั่ง
pip install easygui
เมื่อติดตั้งเสร็จแล้วก็มาเขียนโปรแกรมกันเลย!
![](https://nonthakon-blog.fly.dev/content/images/max/800/1-pwolyab5fnres_keol1p9w.png)
เราจะใช้ Haar Cascade ในการตรวจจับว่าเจอตาของเราอยู่ในจอมั้ยด้วยครับ จึงต้องมีการประกาศ Haar Cascade ที่ใช้
![](https://nonthakon-blog.fly.dev/content/images/max/800/1-2wj4srbhw0bwap2kuknqlg.png)
![](https://nonthakon-blog.fly.dev/content/images/max/800/1-r8w3lb_pagyhvlsxeq29ua.png)
![](https://nonthakon-blog.fly.dev/content/images/max/800/1-zftycivzpdo_hd2vnst6uq.png)
เริ่มลูปเลยเราจะเช็คว่า elapse (เวลาที่ผ่านไป) ต้องน้อยกว่า 20 นาที ถ้าใช่ก็จะเริ่มตรวจจับว่ามีตาของเราอยู่ในภาพที่กล้องเห็นมั้ย (แต่ตาต้องอยู่ในใบหน้า!! จึงต้องตรวจจับหาหน้าของเราก่อน) เมื่อตรวจเจอแล้วเราจะให้เวลาที่ผ่านไปในแต่ละเฟรมเท่ากับ (เวลาปัจจุบัน -last_time หรือเวลาเริ่มต้นของลูปนั้นๆ) แต่ถ้าเวลาที่ผ่านไปเกิน 20 นาทีจะมีหน้าต่างขึ้นมาบอกให้พักสายตาหลังจากนั้นก็จะหยุดโปรแกรมให้พักสายตา 20 วินาที แล้วจึงตั้งค่า elapse และ last_time ใหม่
นี่แหละครับคือโปรแกรมทั้งหมดแล้วเราก็มาลองใช้กันเลยนะครับ
![](https://nonthakon-blog.fly.dev/content/images/max/800/1-wrcycjbqozs53byv0i0lqg.png)
วิธีการรักษาสายตาง่ายๆอีกวิธีนึงคือปรับแสงสีฟ้าในจอให้ลดลงครับ ใครใช้จอคอมก็ปรับลดลงได้ที่จอโดยตรง แต่ใครใช้โน้ตบุ๊คสามารถปรับลดลงได้โดยใช้โปรแกรม f.lux หรือถ้าใครใช้ windows 10 creator update ขึ้นไปก็มี night mode รองรับครับ
สำหรับบทความนี้ก็จบลงเพียงเท่านี้ครับขอบคุณทุกท่านมากๆนะครับ :D
ใครชอบก็รบกวนช่วยกด follow หรือ recommend ให้หน่อยนะครับ :)
https://pastebin.com/Jud8h5Jc เผื่อใครอยากนำไปใช้ครับ
# อันนี้ตัวแก้ให้กิน resource น้อยลงครับ https://pastebin.com/2JwKS6AM