ไม่ได้เขียนอะไรลงบล๊อคซะนานจนเกือบจะเป็นบ้านร้างไปอีกหละ วันนี้เรามาทดลองติดตั้ง OpenCV และ Node.js กันดูสักหน่อยหละกัน จริงๆก็ไม่ได้เชียวชาญอะไรหรอกนะครับ แต่พอดีมีงานเล็กๆ น้อยๆ ที่จำเป็นต้องใช้ก็เลยต้องหาข้อมูลมาทำ และเมื่อได้มาแล้วเราก็ต้องมาแบ่งปันประสบการณ์กันสักหน่อยเผื่อจะเป็นแนวทางให้คนอื่นเอาไปต่อยอดทำอะไรอย่างอื่นต่อได้ มาเริ่มกันเลยครับ ตัว OpenCV เป็นโปรแกรมที่เอาไว้ทำพวก Image Processing และ Computer Vision เอาง่ายๆก็คือเป็นโปรแกรมที่ใช้ประมวลผลภาพและเอาไว้ช่วยให้คอมพิวเตอร์มองเห็นภาพ เพื่อใช้ในการวิเคราะห์ว่าภาพนั้นคือภาพอะไร ซึ่งมันก็จะต้องมีในส่วนของการ training เพื่อให้ระบบมันรู้จักภาพต่างๆ แต่เราจะข้ามไปเลยนะครับ เดียวเราจะใช้แค่ค้นหาใบหน้าซึ่งเขาทำเตรียมมาให้เราอยู่แล้ว ส่วนตัว Node.js นี้ไม่รู้จะอธิบายยังไงดี มันเป็นเหมือนสภาพแวดล้อมที่ใช้เขียนโปรแกรมด้วย JavaScript และใช้รันในฝั่งของ Server นะครับ ที่ผมเลือกใช้ตัวนี้เพราะเห็นตัวอย่างการใช้งาน OpenCV ของมันแล้วดูง่ายดี ไม่มีเหตุผลอื่น
ทั้งหมดนี้ทำภายในไดเร็กทอรี /root และใช้สิทธิของ root นะครับ มาเริ่มที่อย่างแรกที่ต้องทำกันก่อน เริ่มจากการติดตั้ง EPEL (Extra Packages for Enterprise Linux) กันก่อนครับ
1 2 3 4 5 6 7 | ## RHEL/CentOS 6 ## สำหรับเครื่อง 32-Bit # wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm # rpm -ivh epel-release-6-8.noarch.rpm ## RHEL/CentOS 6 ## สำหรับเครื่อง 64-Bit # wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # rpm -ivh epel-release-6-8.noarch.rpm |
จากนั้นทำการติดตั้ง Development Tools
1 2 | # yum update # yum groupinstall 'Development Tools' |
ติดตั้ง cmake28
1 | # yum install cmake28 |
ติดตั้ง Python version 2.6
1 | # yum install python26 |
ทำการสร้างลิงค์ให้คำสั่ง python เรียกไปที่ python26 (เวลาเราเรียกใช้คำสั่ง python จะได้ไปใช้ version 2.6)
1 2 | # mkdir -p $HOME/bin # ln -s /usr/bin/python26 $HOME/bin/python |
ทดสอบเรียกคำสั่ง python -V เพื่อตรวจสอบว่าได้ version 2.6 แล้วหรือยัง
1 | # python -V |
ทำการ export path ที่จำเป็นต้องใช้ไปไว้ในไฟล์ .bashrc (ไฟล์นี้จะถูกเรียกทุกครั้งเวลาที่เราทำการ login เข้าระบบ)
1 2 3 4 5 | # echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc # echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib' >> ~/.bashrc # echo 'export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig' >> ~/.bashrc # source ~/.bashrc |
ต่อไปขั้นตอนสำคัญ เริ่มทำการติดตั้ง OpenCV กันต่อเลยครับ
1 2 3 4 5 6 | # wget -O opencv-2.4.8.zip http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.8/opencv-2.4.8.zip/download # unzip opencv-2.4.8.zip # cd opencv-2.4.8 # cmake28 -D WITH_FFMPEG=OFF . # make # make install |
จากนั้นทำการติดตั้ง Node.js เพื่อเอาไว้เป็นตัวเรียก OpenCV และเราจะมาหัดเขียน Node.js สักหนึ่งโปรแกรมกันด้วย
1 2 3 4 5 6 7 8 | # cd .. # wget -O node-v0.10.28.tar.gz http://nodejs.org/dist/v0.10.28/node-v0.10.28.tar.gz # tar -xvzf node-v0.10.28.tar.gz # cd node-v0.10.28 # ./configure # make # make install |
ทดสอบดูหน่อยว่าเรียก Node.js ได้ไหม
1 | # node --version |
ขั้นตอนเกือบสุดท้าย ทำการติดตั้ง node-opencv
1 2 | # cd .. # npm install opencv |
เมื่อติดตั้งเรียบร้อยเรามาลองเขียนโปรแกรมกับ Node.js สักโปรแกรมกันก่อนนะครับ ว่ามันสามารถทำงานได้ไหม ซึ่งผมเองก็เขียนไม่ค่อยเป็น แต่เดี๋ยวเราลอกโค้ดตัวอย่างจากเว็บเขาเลยหละกัน เว็บไซต์ของ Node.js อยู่นี้นะครับ http://www.nodejs.org/
1 | # nano server_node.js |
พิมพ์โค้ดต่อไปนี้ลงไป
1 2 3 4 5 6 7 | // Run : node server_node.js var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(1337); console.log('Server running at port 1337'); |
จากนั้นสั่งรันด้วยคำสั่ง
1 | # node server_node.js |
ลองเปิดเว็บบราวเซอร์และเรียกไปที่ url http://192.168.8.104:1337 (อย่าลืมเปลี่ยนเป็น IP ของคุณเองด้วยนะครับ
จากนั้นลองทดสอบการใช้ OpenCV ในการตรวจสอบใบหน้าของคนกันต่อเลยครับ ซึ่งเราก็จะไม่ได้เขียนเองทั้งหมดหรอกนะครับ เขามีตัวอย่างมาให้อยู่แล้ว ลองเปิดดูตัวอย่างและแก้นิดๆ หน่อยๆ ก็เอาไปใช้งานต่อได้แล้วครับ โดยตัวอย่างของ node-opencv จะอยู่ที่ /root/node_modules/opencv/examples/ โดยในตัวอย่างเราจะลองใช้ face_detection.js ในการค้นหาใบหน้า โดยให้ทำการเปิดไฟล์ face_detection.js ขึ้นมาแก้ไข โดยให้แก้ไขที่ ./haarcascade_frontalface_alt.xml ให้แก้เป็น ../data/haarcascade_frontalface_alt.xml จากนั้น save และลองสั่งรันโปรแกรมดูครับ
1 2 | # cd /root/node_modules/opencv/examples/ # node face_detection.js |
ถ้าหากว่ารันโปรแกรมได้ โปรแกรมจะสร้างไฟล์รูปขึ้นมาให้เราชื่อ out.png ลองเปิดดูจะเห็นว่ามีวงกลมบนใบหน้าของโนนาลิซาอยู่นะครับ ด้วยความรู้อันน้อยนิดที่ผมมีเท่านี้ น่าจะพอเป็นแนวทางให้ให้นำไปต่อยอดกันต่อได้นะครับ ^^
จะได้ภาพออกมาประมาณนี้ครับ
# Update 2014-06-17
ทำการ export path ของ nodejs module เพื่อให้สามารถเรียกใช้งานได้จากทุกที่
1 2 3 | # echo 'export NODE_PATH=/root/node_modules' >> ~/.bashrc # source ~/.bashrc |
อ่านเพิ่มเติม
http://opencv.org/
http://nodejs.org/
http://peterbraden.github.io/node-opencv/