PDA

View Full Version : یه مشکل کوچیک در Qt و OpenCV



AlgorithmX
یک شنبه 28 آبان 1391, 20:56 عصر
سلام!
در کیوت قسمت تنظیمات پروژه (.pro) این کتابخونه ها رو اضافه کردم :

INCLUDEPATH += "C:\opencv_bin\install\include"
LIBS += "C:\opencv_bin\bin\*.dll"


و توی خود پروژم وقتی مینویسم :
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"

هیچ مشکلی نیست اما ساده ترین کد برنامه ای مثله اینو :
int main()
{
cv::Mat mat;
mat = cv::imread("c:\\test.jpg");
cv::namedWindow("window");
cv::imshow("window",mat);
cv::waitKey(0);
return 0;
}


رو که اجرا میکنم، اجرا میشه اما انگار نه انگار، و عکسی به من نمایش داده نمیشه !!! http://www.mojsazan.com/forum/images/smilies/Yahoomessanger/2.gif ینی بدجور حالمو گرفته !!!! http://www.mojsazan.com/forum/images/smilies/Yahoomessanger/12.gif

و بهد یه سوال دیگه ...

دیدم بعضی ها در سربگ برنامه cv.h و highgui.h رو مینویسن و دیگه تموم، مثلاً اینطور:
#include "cv.h"
#include "highgui.h"


اما من ک مینویسمشون زیرش خط سبز میکشه و انگار تعریف نشدست http://www.mojsazan.com/forum/images/smilies/Yahoomessanger/2.gif

AlgorithmX
یک شنبه 28 آبان 1391, 22:24 عصر
راستی الان تو فروم کیوت یه سوال پیدا کردم ک مشکله طرف مثل مشکل خودمه !!!:لبخندساده:

http://www.qtcentre.org/threads/45541-New-in-opencv2-3-1-and-Qt?highlight=opencv

اما نفهمیدم چطوری حلش کرده !!:اشتباه:
دوستان خواهش میکنم راهنمایی کمکم کنید !! :ناراحت:

مصطفی ساتکی
یک شنبه 28 آبان 1391, 23:22 عصر
در مورد سوال اولتون بایستی علاوه بر مسیر include\ مسیر include\opencv\ را هم اضافه کنید .
مسیر dll ها رو تو LIBS معرفی نمی کنید مسیر bin\ مربوط به opencv رو بایستی در Environment variable اضافه کنید.
شما بایستی هم مسیر lib ها و هم لیست lib ها را معرفی نماید.
LIBS += -LC:\OpenCV2.2\lib \
-lopencv_core220 \
-lopencv_highgui220 \
-lopencv_imgproc220 \
-lopencv_features2d220 \
-lopencv_calib3d220

جواب سوال دوم شما هم فرقی نمی کنه می تونید از آن 2 هدر قبلی نیز استفاده کنید از OpenCV2.2 که به سمت C++ متمایل شده از هدر های جدید استفاده میشه همونی که توی sample استفاده کردید در نسخه های جدید دسته بندی بهتری برای مجموعه هدرها ارائه شده.

AlgorithmX
دوشنبه 29 آبان 1391, 07:13 صبح
خعلی گلی ...
ولی چند چیزشو نفهمیدم :لبخند:


در مورد سوال اولتون بایستی علاوه بر مسیر include\ مسیر include\opencv\ را هم اضافه کنید .چطوری؟ اینطوری : ؟!!
INCLUDEPATH+="C:\opencv_bin\install\include"/ "C:\opencv_bin\install\include\opencv"


مسیر dll ها رو تو LIBS معرفی نمی کنید مسیر bin\ مربوط به opencv رو بایستی در Environment variable اضافه کنید.ینی در :
System Property >> Advanced >> Environment variable
؟!
خب چیو اضاف کنم؟ چی بنویسم ؟ توی path؟ توی چی؟!! :لبخند:


جواب سوال دوم شما هم فرقی نمی کنه می تونید از آن 2 هدر قبلی نیز استفاده کنید از OpenCV2.2 که به سمت C++‎ متمایل شده از هدر های جدید استفاده میشه همونی که توی sample استفاده کردید در نسخه های جدید دسته بندی بهتری برای مجموعه هدرها ارائه شده.

ینی #include "cv.h"
#include "highgui.h"


دیگه استفاده نمیشه؟! همونی ک خودم نوشتم جواب میده؟!

مصطفی ساتکی
دوشنبه 29 آبان 1391, 21:13 عصر
چطوری؟ اینطوری : ؟!!
INCLUDEPATH+="C:\opencv_bin\install\include"/ "C:\opencv_bin\install\include\opencv"

بله




ینی در :
System Property >> Advanced >> Environment variable
؟!
خب چیو اضاف کنم؟ چی بنویسم ؟ توی path؟ توی چی؟!! :لبخند:



بله .
C:\opencv_bin\install\bin را اضافه کنید




ینی #include "cv.h"
#include "highgui.h"


دیگه استفاده نمیشه؟! همونی ک خودم نوشتم جواب میده؟!
بله .

AlgorithmX
دوشنبه 29 آبان 1391, 21:20 عصر
بله




بله .
C:\opencv_bin\install\bin را اضافه کنید


بله .


3 تا بله گرفتم ... میرم مرحله بعد !!! :لبخند:

AlgorithmX
دوشنبه 29 آبان 1391, 21:44 عصر
به دلیل تفاوت نسخه های opencv شما (کدشما) و cv من، مجبور به تغییر کد شما که این بوده :
LIBS += -LC:\OpenCV2.2\lib \
-lopencv_core220 \
-lopencv_highgui220 \
-lopencv_imgproc220 \
-lopencv_features2d220 \
-lopencv_calib3d220



رو به این تبدیل کنم چون اصلا اون فایل ها در شاخه ذکر شده در سیستم من وجود نداشتند! :
LIBS+=-LC:opencv_bin\lib\
-libopencv_core231\
-libopencv_highgui231\
-libopencv_imgproc231\
-libopencv_features2d321\
-libopencv_calib3d231

و شاخه های C:\opencv_bin\install\bin و (جهت اطمینان) C:\opencv_bin\bin رو به path در Environment variable اضاف کردم.
اما باز پروژه اجرا میشه و هیچ اتفاقی پیش نمیاد!!: پروژم رو هم ضینه کردم .. شاید نیاز به بازنگری داشته باشه!!



ممنونم ازت عزیز !!:لبخندساده:

مصطفی ساتکی
سه شنبه 30 آبان 1391, 11:27 صبح
من OpenCV رو با QT استفاده می کنم و مشکلی هم ندارم مطمن هستید که OpenCV رو درست make و compile کردید؟

AlgorithmX
سه شنبه 30 آبان 1391, 12:01 عصر
میشه گفت آره ... چون عیناً از رویه آموزشی که تو سایت ها دیدم و یه فیلم که از یوتیوب دانلود کردم انجام دادم.
1. cmake-2.8.10.1-win32-x86 و OpenCV-2.3.1-win-superpack رو دانلود کردم.
2. cv رو در شاخه c:\opencv اسخراج کردم
3. "C:\Program Files (x86)\CMake 2.8\bin;C:\QtSDK\mingw\bin;C:\opencv_bin\install\b in;C:\opencv_bin\bin" رو به path های سیستم
4. آدرس اکسترک شده cv رو به cmake دادم
5. و در آدرس c:\opencv_bin کانفیگ
6. Qt و چنتا تیک دیگشو فعال کردم و کامفیگ و جنریت کردم
7. در کامند "mingw32-make" رو دارد کردم
8. اون متنهای رنگینکمانی (:لبخند: ) رد شدن
9. و mingw32-make install رو نوشتم
10. نصب شدم و سلام
11. تو qt .pro ی پروژم نوشتم :

INCLUDEPATH+="C:\opencv_bin\install\include"/ "C:\opencv_bin\install\include\opencv"


LIBS+=-LC:opencv_bin\lib\
-libopencv_core231\
-libopencv_highgui231\
-libopencv_imgproc231\
-libopencv_features2d321\
-libopencv_calib3d231



12. و در main.cpp :
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"

int main()
{
cv::Mat mat;
mat = cv::imread("c:\\test.jpg");
cv::namedWindow("window");
cv::imshow("window",mat);
cv::waitKey(0);
return 0;
}






13. اجرا کردم و هیچ اتفاقی رخ نداد .. صفحه cmd 1 ثانیه مثله نور بازو بسته میشه!!
14. آخیهههی چقد نوشتم ... :لبخند:

AlgorithmX
سه شنبه 30 آبان 1391, 22:43 عصر
حل شد .. 2باره کامپایلش کردمممممممممممممممممممممم مممممم بعده 3 بار ... ییهو دیدم 2روست شد !!!:کف: