ShadowWares Forum

Programming (Applications) => Image processing & Computervision => ข้อความที่เริ่มโดย: ShadowMan ที่ พฤศจิกายน 19, 2012, 12:59:06 pm



หัวข้อ: OpenCV-2.4.3 and Visual C++ 2010 PRO (Also tested with VC++2012 on Windows 8)
เริ่มหัวข้อโดย: ShadowMan ที่ พฤศจิกายน 19, 2012, 12:59:06 pm
สิ่งนี้สำหรับคนใช้คอมพิวเตอร์ที่ขับเคลื่นโดย CPU แบบ x86 (32-bit) เท่านั้น

เนื่องจาก OpenCV 2.4.x มีไฟล์ขนาดใหญ่มากกว่า 3GB ต้องใช้เวลาในการติดตั้งนาน และเปลืองพื้นที่ไปโดยไม่จะเป็น
อีกทั้งยังยุ่งยากต่อการกำหนดค่าต่างๆ ในที่นี้จึงขอแนะนำวิธีที่ง่าย ไว้เป็นตัวเลือกสำหรับผู้ที่สนใจ

เริ่มจากการ Download (45.71 MB) (http://www.mediafire.com/?4bznl4utbevcpjj)ไฟล์ OpenCV-x86-vc10-2.4.3.rar

จากนั้นทำการ Extract ไว้ในตำแหน่งที่ต้องการ เช่น D:\ เป็นต้น
นั่นคือจะมี Folder อยู่ 5 Folder ใน "D:\OpenCV-x86-vc10-2.4.3" ดังนี้
(http://upic.me/i/ke/opencv-folder.png)

*** ไฟล์เหล่านี้ผมได้คอมไพล์ด้วย Visual Studio 2010 PRO ***
***  ทำการทดสอบบน Widows 7 และ 8 ที่มี CPU แบบ x86 (32-bit) และไม่ใช้ GPU เท่านั้น ***
*** ไม่การันตีว่าจะทำงานได้บนคอมพิวเตอร์ทุกเครื่อง ***

ต่อไปให้ทำการเพิ่ม "D:\OpenCV-x86-vc10-2.4.3" เข้าไปยัง Environment Variables ของ Windows (หากไม่ทราบว่าทำอย่างไร ให้ศึกษาเพิ่มเติม หรืออ่านจากที่นี่ (http://www.shadowwares.com/forum/index.php?topic=1312.msg4931#msg4931))

เข้าไปที่ "D:\OpenCV-x86-vc10-2.4.3\OpenCV-x86-vc10-2.4.3-Example" จากนั้นเปิดไฟล์ที่ชื่อ "OpenCV-x86-vc10-2.4.3-Example" ไฟล์นี้มีนามสกุลเป็น .sln ซึ่งเป็นไฟล์ Solution นั่นเอง
ให้ทำการเปิดไฟล์นี้โดย Visual C++ 2010 หรือคลิกขวาแล้วเลือก Open with |  Microsoft Visual Studio 2010 ก็ได้เช่นกัน

(http://upic.me/i/p3/openwr.png)

รูปร่างหน้าตาจะเป็นแบบนี้



ลองทำการ Compile และรันดู หากไม่มีอะไรผิดพลาดจะได้ผลแบบนี้




รายละเอียดของโปรแกรม:

Code: (c)
#include <stdio.h>  
#include <cv.h>  
#include <highgui.h>  
#ifdef _DEBUG  
  #pragma comment(lib, "opencv_core243d.lib")  
  #pragma comment(lib, "opencv_highgui243d.lib")  
#else  
  #pragma comment(lib, "opencv_core243.lib")  
  #pragma comment(lib, "opencv_highgui243.lib")  
#endif  
  
int main(void){  
   char windowname[] = {"MyImageWindow"};  
   //char filename[] = {"D:/Image.png"};  
   char filename[] = {"../Image.png"};
   IplImage *img = cvLoadImage(filename, 1);  
   if(!img){
      printf("\nCould not open the image, \"%s\"\n\nPress any key to exit.", filename);
      getchar();
      exit(0);
   }
   cvShowImage(windowname, img);  
   cvWaitKey(0);  
   cvDestroyWindow(windowname);  
   cvReleaseImage(&img);  
   return(0);  
}  


เรียบร้อยครับ  [emo=azn]


หัวข้อ: OpenCV-2.4.3 and Visual C++ 2010 PRO (Also tested with VC++2012 on Windows 8)
เริ่มหัวข้อโดย: ShadowMan ที่ พฤศจิกายน 20, 2012, 01:15:36 pm
สำหรับคนที่ใช้ Visual C++ 2012 สามารถเปิดไฟล์ตัวอย่างข้างต้นได้ทันทีครับ (File | Open Project)
(http://upic.me/i/94/openprj.png)

เมื่อทำการเปิดไฟล์ขึ้นมา จะมีการบอกให้เราทำการ update ไฟล์ เพื่อข้ามจาก VC++ 2010 มาเป็น VC++ 2012 ให้ตกลงและดำเนินการต่อไป
อย่าลืม !! การ Compile ในครั้งแรกจะต้องเลือกเป็น Rebuild ไม่เช่นนั้นอาจจะมีข้อความรายงานความผิดพลาด ว่าด้วย ไม่รู้จักไฟล์เฉพาะบางตัว

ในที่นี้ผมได้ทดลองกับ Visual C++ 2012 Express (Desktop) รันบน Windows 8 ทุกอย่างราบรื่นดี



หัวข้อ: Re: OpenCV-2.4.3 and Visual C++ 2010 PRO (Also tested with VC++2012 on Windows 8)
เริ่มหัวข้อโดย: Thescrubb ที่ ธันวาคม 13, 2012, 05:37:27 pm
จาก Opencv 2.4.3 ทำ MFC ได้ไหมครับ คือผมลองแล้ว ไลบารี่ บางตัว มันมีไม่เหมือน opencv 2.1 ที่พี่ได้ทำข้อมูลไว้ครับ
ผมสนใจเกี่ยวกับทำ MFC แต่ไม่รู้จะห่ข้อมูลอ่านจากไหนครับ

คำถามเพิ่มเติมครับ C# เนี่ย เขียนร่วมกับ Opencv ได้ไหมครับ หรือเขียน C++ ได้อย่างเดียว
เผื่อผมจะได้ลองมารันใน Fram appication

 [emo=angel] [emo=angel] [emo=angel] [emo=angel] [emo=angel]


หัวข้อ: Re: OpenCV-2.4.3 and Visual C++ 2010 PRO (Also tested with VC++2012 on Windows 8)
เริ่มหัวข้อโดย: ShadowMan ที่ ธันวาคม 13, 2012, 07:14:09 pm
อ้างถึง
จาก Opencv 2.4.3 ทำ MFC ได้ไหมครับ คือผมลองแล้ว ไลบารี่ บางตัว มันมีไม่เหมือน opencv 2.1 ที่พี่ได้ทำข้อมูลไว้ครับ
ผมสนใจเกี่ยวกับทำ MFC แต่ไม่รู้จะห่ข้อมูลอ่านจากไหนครับ
- เวอร์ชั่นต่างกัน ย่อมมีรายละเอียดปลีกย่อยต่างๆ แตกต่างกันแน่นอนครับ
 - Library ที่ผมเคยทำไว้ ควรใช้คู่กับ version 2.1 ครับ หากต้องการมาใช้กับ เวอร์ชั่นที่สูงขึ้นมา จะต้องใช้ความรู้เชิงลึกเรื่องภาษา C และ Dynamic Link Library เป็นอย่างดี
 - MFC กับ OpenCV ไม่มีอะไรเกี่ยวข้องกันครับ มีส่วนเดีบยวที่เชื่อมโยงกันคือข้อมูลการแสดงผล นั่นคือเราต้องเปลี่ยนจาก IplImage ของ OpenCV มาเป็น Bitmap เพื่อแสดงผลบน MFC

อ้างถึง
คำถามเพิ่มเติมครับ C# เนี่ย เขียนร่วมกับ Opencv ได้ไหมครับ หรือเขียน C++ ได้อย่างเดียว
เผื่อผมจะได้ลองมารันใน Fram appication
- หากจะเล่น C# ให้มองหา Emgu ครับ (มันคือ OpenCV ที่ถูกตัดต่อ/ปรับปรุงพันธุกรรมให้ไปทำงานบน C#)