พฤศจิกายน 21, 2018, 01:55:31 pm *
ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน
ส่งอีเมล์ยืนยันการใช้งาน?

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
   หน้าแรก   ช่วยเหลือ เข้าสู่ระบบ สมัครสมาชิก  
หน้า: [1] 2 3   ลงล่าง
  พิมพ์  
ผู้เขียน หัวข้อ: Using OpenCV-2.4  (อ่าน 25986 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8272


ShadowWares


| |
« เมื่อ: กรกฎาคม 19, 2012, 06:56:24 am »

เวอร์ชั่นหลังๆ มาของ OpenCV จะมี pre-build ให้ใช้อยู่แล้ว (ข้อสังเกตุคือหลังจากติดตั้งเสร็จแล้ว โฟลเดอร์ของ OpenCV จะโตถึงเกือบๆ 3GB) เรียกว่าหลัง Install เสร็จไม่ต้องไป CMake กันให้วุ่นวาย เวอร์ชั่น 2.2 เป็นต้นมา เริ่มไม่มี Binary มาให้ใช้ เนื่องจากทาง OpenCV พัฒนา OpenCV มาให้รองรับหลากหลายไม่ว่าจะเป็น Windows, Linux, MAC, iOS, Android เลยปล่อยมาทีเดียว เลือกใช้กันตามอัธยาศัยก็ว่าได้
ความหลากหลาย ก็ให้เกิดความวุ่นวาย และความงวยงงกับมือใหม่ได้ง่าย เลยมาเขียนบทความสั้นไว้ให้มือใหม่ได้ใช้เป็นแนวทางกันต่อไป
บทความนี้อ้างอิงไปที่ Visual C++ 2008 และ OpenCV v2.4 เวอร์ชั่นอื่นๆ ของ Visual C++และ OpenCV ก็มีวิธีการที่คล้ายกัน

เริ่มจากเปิด Visual C++ ขึ้นมา จากนั้นคลิกที่ Tools | Option...



ตามด้วยการบอก Visual C ว่าไฟล์ header ต่างๆ อยู่ที่นี่นะ ตรงนี้ก็คือการเพิ่ม Include Directories นั่นเอง ทำตามรูป (Path สิ่งที่เพิ่มลงไป ขึ้นกับว่าลง OpenCV ไว้ที่ไหน)


บอกต่อว่า Library อยู่ที่ไหน



ต่อไปก็บอก Windows ว่า Binary และ/หรือ Executable files อยู่ที่ไหน ส่วนนี้เรียกว่าการเพิ่ม System Environment Path
เริ่มจากคลิกกขวาที่ MyComputer ตามด้วย Properties




คลิกที่ Advanced Sytem Settings


ที่แทป Advanced คลิกที่ Environment Variables


ดับเบิลคลิกที่ PATH


จะได้หน้าต่าง Edit User Variable แบบนี้ขึ้นมา

ตามด้วยการเพิ่ม Path ลงไป โดยการเพิ่มต่อท้ายจากของเดิมที่มีอยู่
Code:
;D:\Program Files\OpenCV-2.4.2\opencv\build\x86\vc9\bin ;D:\Program Files\OpenCV-2.4.2\opencv\build\common\tbb\ia32\vc9
ย้ำนะครับว่า ต้องมี ; และ Path คือตำแหน่งที่ได้ทำการติดตั้ง OpenCV ไว้ ต้องเลือกให้ตรงกับเวอร์ชั่นของ Visual C++ ด้วย เช่นของผมเป็น Visual C++ 2008 ก็จะเป็น vc9 เป็นต้น

สุดท้ายคือทดสอบโดยการเขียน code ทำนองนี้:
Code: (c)
#include <cv.h>
#include <highgui.h>
#ifdef _DEBUG
  #pragma comment(lib, "opencv_core242d.lib")
  #pragma comment(lib, "opencv_highgui242d.lib")
#else
  #pragma comment(lib, "opencv_core242.lib")
  #pragma comment(lib, "opencv_highgui242.lib")
#endif

int main(void){
   char windowname[] = {"MyImage"};
   char filename[] = {"D:/Image.bmp"};
   IplImage *img = cvLoadImage(filename, 1);
   cvShowImage(windowname, img);
   cvWaitKey(0);
   cvDestroyWindow(windowname);
   cvReleaseImage(&img);
   return(0);
}


หากไม่มีอะไรผิดพลาด ก็จะมีภาพที่กำหนด แสดงขึนมาให้เห็น นั่นเป็นสัญญาณบอกว่า พร้อมลุย!!
บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
วิสิทธิ์ แผ้วกระโทก
Global Moderator
Sr. Member
*****
ออฟไลน์ ออฟไลน์

กระทู้: 307



| |
« ตอบ #1 เมื่อ: กรกฎาคม 21, 2012, 10:50:50 pm »

ตอน Build ผมก็ Build ผ่านนะ
อ้างถึง
1>------ Build started: Project: FirstProject, Configuration: Debug Win32 ------
1>Compiling...
1>stdafx.cpp
1>Compiling...
1>FirstProject.cpp
1>d:\software\opencv2.4.2\opencv\build\include\opencv2\flann\logger.h(66) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(237) : see declaration of 'fopen'
1>Compiling manifest to resources...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
1>Copyright (C) Microsoft Corporation.  All rights reserved.
1>Linking...
1>LINK : D:\Dropbox\OpenCV2.4\FirstProject\Debug\FirstProject.exe not found or not built by the last incremental link; performing full link
1>Embedding manifest...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
1>Copyright (C) Microsoft Corporation.  All rights reserved.
1>Build log was saved at "file://d:\Dropbox\OpenCV2.4\FirstProject\FirstProject\Debug\BuildLog.htm"
1>FirstProject - 0 error(s), 1 warning(s)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

แต่พอกด Debug ดู ดันError ซะงั้น



โค๊ดก็แบบตัวอย่าง ง่ายๆ
Code: (c-sharp)

// FirstProject.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <cv.h>
#include <highgui.h>


int _tmain(int argc, _TCHAR* argv[])
{
   IplImage *img = cvLoadImage("test.jpg");
   cvNamedWindow("Image:",1);
   cvShowImage("Image",img);

   cvWaitKey();
   cvDestroyWindow("Image:");
   cvReleaseImage(&img);
   return 0;
}
บันทึกการเข้า

ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8272


ShadowWares


| |
« ตอบ #2 เมื่อ: กรกฎาคม 22, 2012, 07:35:47 am »

การกำหนด system path ยังไม่ถูกต้องครับ
ลองตรวจสอบให้มั่นใจว่ามีไฟล์ที่ถามหานั้นอยู่ในเครื่องจริง และอยู่ที่ไหน ที่ที่มันอยู่นั่นคือสิ่งที่ต้องนำไปเพิ่มใน system path
หากทำแล้วยังไม่ได้ ให้ restart เครื่องคอมพิวเตอร์ก่อน
หากยังไม่ได้อีก ให้ copy ไฟล์ดังกล่าวมาไว้ใน project หลังจากนั้นทุกอย่างน่าจะราบรื่น
บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
วิสิทธิ์ แผ้วกระโทก
Global Moderator
Sr. Member
*****
ออฟไลน์ ออฟไลน์

กระทู้: 307



| |
« ตอบ #3 เมื่อ: กรกฎาคม 22, 2012, 08:57:23 am »

เช็ค system path
อ้างถึง
D:\software\opencv2.4.2\opencv\build\x86\vc9\bin;
D:\software\opencv2.4.2\opencv\build\common\tbb\ia32\vc9;

แล้ว ต้อง restart ด้วยครับ (Windows XP)

ตอนนี้ ได้แล้ว ครับ ขอบคุณครับ  cheesy


บันทึกการเข้า

ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8272


ShadowWares


| |
« ตอบ #4 เมื่อ: กรกฎาคม 22, 2012, 09:55:21 am »

ยินดีด้วยครับ

บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
วิสิทธิ์ แผ้วกระโทก
Global Moderator
Sr. Member
*****
ออฟไลน์ ออฟไลน์

กระทู้: 307



| |
« ตอบ #5 เมื่อ: กรกฎาคม 26, 2012, 11:14:40 am »

มาเพิ่มเติมอีกนิด อาจจะมีใครเจอปัญหาแบบผม ปัญหานี้ เจอกันเยอะเหมือนกัน (จากที่ค้นหาดู)
มันเป็นความมักง่ายของผมเอง พอดีผมต้องการที่จะติดตั้ง OpenCV กับเครื่องที่ทำงานด้วย ด้วยความรีบ ไม่ทันสังเกต ก็ทำตามที่ตัวเองเคยทำ
 
Project Properties --> C/C++ -->  General--> Additional Include Directories

ปรากฏกว่า ดันเลือก path มาผิด สังเกตดูดีๆ ถ้าเข้าไปผิด มันก็ตั้งค่าได้เหมือนกัน ต่างกันตรงที่อันที่ใช้ได้ มันจะต้องผ่าน folder "build" ก่อน
ถ้าไปเลือก path มาผิด จะทำให้ Build ยังงัยก็ไม่ผ่านสักที มันฟ้องว่า

อ้างถึง
d:\software\opencv2.4.2\opencv\include\opencv\cv.h(63) : fatal error C1083: Cannot open include file: 'opencv2/core/core_c.h': No such file or directory



นิทานเรื่องนี้ สอนให้รู้ว่า ถ้ามันฟ้องว่า ในการเซ็ทพาธของ header file ให้ทำอย่างระมัดระวัง อย่ามักง่าย  tongue


บันทึกการเข้า

ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8272


ShadowWares


| |
« ตอบ #6 เมื่อ: กรกฎาคม 26, 2012, 02:44:01 pm »

ตอกย้ำกันชัดๆ ว่าการเรียนรู้ที่ได้ผลจริง คือต้องลงมือทำให้เกิดประสบการณ์


ขอบคุณสำหรับกระทู้ดีๆ ครับ
  wink
บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
idreamb@
Newbie
*
ออฟไลน์ ออฟไลน์

กระทู้: 1


I Love Image Processing++


| |
« ตอบ #7 เมื่อ: สิงหาคม 02, 2012, 07:12:40 pm »

ขอบคุณ ShadowMan และ dynamic ด้วยครับ พอดีผมลองลง Visual C++ 2005 express + OpenCV-2.4.2.exe แล้วเกิด Error รันไม่ออก จนมาได้ความรู้ดีๆ จากเว็บนี้ ต้องขอฝากเนื้อฝากตัวไว้อีกคนนะครับ  grin
บันทึกการเข้า
ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8272


ShadowWares


| |
« ตอบ #8 เมื่อ: สิงหาคม 02, 2012, 07:50:40 pm »

ยินดีที่บทความนี้เป็นประโยชน์กับคุณ
และยินดีต้อนรับเข้าสู่ชาโดว์แวร์ครับ
  grin
บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
jaejaejae
Newbie
*
ออฟไลน์ ออฟไลน์

กระทู้: 1


| |
« ตอบ #9 เมื่อ: สิงหาคม 20, 2012, 12:20:49 pm »

ลองดูแล้วอ่ะค่ะ build ผ่าน แต่ตอนรันแล้วมี error ค่ะ

'bbb.exe': Loaded 'C:\Users\...\bbb\Debug\bbb.exe', Symbols loaded.
'bbb.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll', Symbols loaded (source information stripped).
'bbb.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', Symbols loaded (source information stripped).
'bbb.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', Symbols loaded (source information stripped).
'bbb.exe': Loaded 'C:\Program Files\AVAST Software\Avast\snxhk.dll', Cannot find or open the PDB file
'bbb.exe': Loaded 'C:\lib\opencv\build\x86\vc10\bin\opencv_core242d.dll', Cannot find or open the PDB file
'bbb.exe': Loaded 'C:\Windows\SysWOW64\msvcp100d.dll', Symbols loaded.
'bbb.exe': Loaded 'C:\Windows\SysWOW64\msvcr100d.dll', Symbols loaded.
The program '[7156] bbb.exe: Native' has exited with code -1073741701 (0xc000007b).

openCV ใช้รุ่น 2.4.2 ค่ะ ส่วน IDE คือ VS C++ express 2010 ค่ะ

ได้เพิ่ม include directory กับ library แล้ว และก็เพิ่ม path แล้ว เช็ค path ดู path ก็เข้าไปที่ใน bin นะคะ...
ช่วยดูให้หน่อยค่ะ ลองลงมาหลายวันหลายวิธีแล้ว เคยลองสร้าง binaries เองด้วย T___T

ขอบคุณล่วงหน้าค่ะ
บันทึกการเข้า
ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8272


ShadowWares


| |
« ตอบ #10 เมื่อ: สิงหาคม 20, 2012, 01:05:12 pm »

ดูเหมือนว่า จะใช้ WIN64bit กับ Visual C++ 32bit หรือเปล่า?
ถ้าใช่ ต้องขอตอบว่าไม่ทราบครับ ผมไม่เคยใช้แบบ non-compatible version
เท่าที่หาข้อมูลเบื้องต้นดู มีคนเจอปัญหาเดียวกับคุณมากมาย อย่างเช่นที่นี่ คงต้องลองผิดลองถูกไปเรื่อยๆ จนกว่าจะเจอ
หรือไม่ก็กลับไปใช้เวอร์ชั่นก่อนๆ ครับ
บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
Levy
Newbie
*
ออฟไลน์ ออฟไลน์

กระทู้: 9


| |
« ตอบ #11 เมื่อ: สิงหาคม 27, 2012, 08:52:59 pm »

สวัสดีครับผมดาวโหลด OpenCV 2.4 มาแล้ว แค่ extract ออกมาใช่ไหมครับแล้วเก็บไว้สักที่หนึ่ง เช่น C:\opencv จากนั้นผมก็ลง Microsoft Visual Studio Ultimate 2010 แต่พอเปิด Visual C++ ขึ้นมาจะทำตามขั้นตอนที่พี่บอกไว้ ของผม VC++ directories มันไม่ให้แก้ไข ไม่ทราบว่าปัญหาที่ผมเจอนี่เป็นเพราะอะไรครับ พอจะมีทางไหนที่จะแก้ปัญหานี้ได้บ้างครับ แต่ผมยังไม่ลองตัว express ครับ

ขอขอบคุณครับ


บันทึกการเข้า
ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8272


ShadowWares


| |
« ตอบ #12 เมื่อ: สิงหาคม 27, 2012, 09:23:55 pm »

ข้อความที่เห็นบนหน้าต่างนั้นบอกอยู่แล้วนี่ครับ และเป็นเรื่องปรกติของ Version Ultimate 2010

ที่ต้องทราบอีกอย่างคือ Ultimate Version ไม่ได้ถูกสร้างมาให้มือใหม่ใช้ ตรงนี้ต้องระวัง
บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
Levy
Newbie
*
ออฟไลน์ ออฟไลน์

กระทู้: 9


| |
« ตอบ #13 เมื่อ: กันยายน 17, 2012, 10:35:31 am »

กลับมาอีกครั้งครับ คราวที่แล้วทำไม่ได้ พอผมว่างจากงานหลักเลยกลับมาพยายามอีกครั้ง
ด้วยความเป็นมือใหม่ ผมควรเริ่มต้นเหมือนพี่ ShadowMan ทุกอย่าง (เพื่อความง่าย)

ตอนนี้ก็สำเร็จแล้วครับตามรูปครับ (ผมใช้ Windows XP, MS. VS2008)




แต่ก่อนที่ผมจะทำได้ก็เจอปัญหาครับ เลยเอาประสบการณ์มาแบ่งเผื่อว่าใคร (ที่มือใหม่อย่างผม) เจอปัญหาแบบนี้
จะได้มีทางออกเร็วขึ้น (จริงๆมันก็ตามที่พี่ ShadowMan กล่าวไว้ทุกประการ)

ผมทำตามขั้นตอนของพี่ ShadowMan เลยครับ

กำหนด path directories ต่างๆให้กับ VC++

ที่ VC++ Directories

1. include files
1.1 C:\Program Files\OpenCV\opencv\build\include
1.2 C:\Program Files\OpenCV\opencv\build\include\opencv
1.3 C:\Program Files\OpenCV\opencv\build\include\opencv2

2. library files
C:\Program Files\OpenCV\opencv\build\x86\vc9\lib
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3. set the system path
; C:\Program Files\OpenCV\opencv\build\common\tbb\ia32\vc9;
C:\Program Files\OpenCV\opencv\build\x86\vc9\bin;

พอทำทั้งสามข้อข้างต้นเสร็จ restart ไปรอบหนึ่ง

กลับมารัน source code ของพี่ ShadowMan ก็มีข้อความขึ้นมาฟ้องว่าหาไฟล์ opencv_core242.dll ไม่เจอ
ผมก็กลับไปหาว่าไฟล์นี้มันอยู่ที่ไหน จริงๆก็อยู่ใน
C:\Program Files\OpenCV\opencv\build\x86\vc9\bin ก็เป็นงงว่าทำไมหาไม่เจอ ไม่รู้ทำไงครับ
ต้องกลับขึ้นไปอ่านข้างบนใหม่ แล้วใช้วิธี copy ไฟล์นั้นไปวางในโปรเจ็กเลย แต่ก็ยังไม่สำเร็จครับ ก็มีข้อความขึ้นมาบอกว่า
หาไฟล์ tbb_debug.dll ไม่เจออีก ซึ่งไฟล์ก็อยู่ใน
C:\Program Files\OpenCV\opencv\build\common\tbb\ia32\vc9 และกำหนดใน system path ไปแล้ว

สุดท้ายผม copy ไฟล์ทั้งสอง

-opencv_core242.dll
-tbb_debug.dll

เพิ่มเติมนิดหนึ่งครับ ผมลองใหม่โดยลบไฟล์ทั้งสองข้างบนทิ้ง แล้ว คัดลอกสามไฟล์ด้านล่างไปใส่แทนครับ (ใส่ใน Debug folder ใน project)
1. opencv_core242.dll
2. opencv_core242d.dll
3. opencv_highgui242d.dll

ไว้ในโปรเจ็กเลยครับ สรุปก็รันผ่าน ผลตามรูป

ผมมีคำถามครับ
1. ที่เกิดปัญหาที่กล่าวไปเบื้องต้นเป็นเพราะ Windows XP (ผมใช้) ที่ลงหรือเปล่าครับ
2. การทำโปรเจ็กอื่นผมต้อง copy ไฟล์ดังกล่าวไว้ในโฟลเดอร์นั้นๆด้วย ทุกครั้งถูกหรือเปล่าครับ
หรือมีแนวทางอื่น

หากมีแนวทางการแก้ปัญหาผมขอได้รับความกรุณาแนะนำครับ

ขอขอบคุณสำหรับความรู้ที่ดีมากๆ ซึ่งหาได้ยากในตำรา ที่พี่ๆมาแบ่งปันกันครับ
บันทึกการเข้า
ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8272


ShadowWares


| |
« ตอบ #14 เมื่อ: กันยายน 17, 2012, 08:40:22 pm »

ก่อนอื่นต้องขอขอบคุณมากที่นำประสบการณ์ดีๆมาแบ่งปันครับ

อ้างถึง
ผมมีคำถามครับ
1. ที่เกิดปัญหาที่กล่าวไปเบื้องต้นเป็นเพราะ Windows XP (ผมใช้) ที่ลงหรือเปล่าครับ
เป็นไปได้ทั้งจาก Windows และ Visual C ครับ ไม่มีใครสรุปได้ชัดเจน เพราะทั้งสองตัวมีระดับความน่าเชื่อถือไม่เต็มร้อย

อ้างถึง
2. การทำโปรเจ็กอื่นผมต้อง copy ไฟล์ดังกล่าวไว้ในโฟลเดอร์นั้นๆด้วย ทุกครั้งถูกหรือเปล่าครับ
หรือมีแนวทางอื่น
ถูกครับ หรือไม่ก็ Copy ไปไว้ใน System ของ Windows เลยก็ได้
วิธีการอื่นๆ ทำได้โดยการกำหนดที่ Visual C แต่ในเมื่อก็รณีข้างต้นไม่ได้ มีความเสี่ยงสูงว่าวิธีการอื่นๆ ก็ไม่ได้เช่นกัน
การ Copy DLL มาไว้ที่เดียวกับ Project หรือ *.exe เป็นเรื่องที่ทำกันปรกติอยู่แล้วครับ หมายรวมถึงโปรแกรมในระดับใช้งานจริง

บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
หน้า: [1] 2 3   ขึ้นบน
  พิมพ์  
 
กระโดดไป: