PDA

View Full Version : سوال: مشکل در opencv



ravaei
چهارشنبه 28 مرداد 1394, 17:13 عصر
درود بر دوستان ... بنده opencv نسخه 3 رو نصب کردم و به قول معروف روی کیوت هم کانفیگ کردمش ولی متاسفانه با یه مشکل اعصاب خورد کن مواجه شدم .
اول این که این فایله pro. بندست :



QT += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = tracking
TEMPLATE = app


SOURCES += main.cpp\
dialog.cpp

HEADERS += dialog.h

FORMS += dialog.ui


INCLUDEPATH += D:\prog\install\opencv\RESOURCE\install\include

LIBS += -LD:\\prog\\install\\opencv\\RESOURCE\\bin\\libopen cv_core2411.dll
LIBS += -LD:\\prog\\install\\opencv\\RESOURCE\\bin\\libopen cv_contrib2411.dll
LIBS += -LD:\\prog\\install\\opencv\\RESOURCE\\bin\\libopen cv_imgproc2411.dll
LIBS += -LD:\\prog\\install\\opencv\\RESOURCE\\bin\\libopen cv_highgui2411.dll
LIBS += -LD:\\prog\\install\\opencv\\RESOURCE\\bin\\libopen cv_calib3d2411.dll
LIBS += -LD:\\prog\\install\\opencv\\RESOURCE\\bin\\libopen cv_features2d2411.dll
LIBS += -LD:\\prog\\install\\opencv\\RESOURCE\\bin\\libopen cv_flann2411.dll
LIBS += -LD:\\prog\\install\\opencv\\RESOURCE\\bin\\libopen cv_gpu2411.dll
LIBS += -LD:\\prog\\install\\opencv\\RESOURCE\\bin\\libopen cv_legacy2411.dll
LIBS += -LD:\\prog\\install\\opencv\\RESOURCE\\bin\\libopen cv_ml2411.dll
LIBS += -LD:\\prog\\install\\opencv\\RESOURCE\\bin\\libopen cv_objdetect2411.dll
LIBS += -LD:\\prog\\install\\opencv\\RESOURCE\\bin\\libopen cv_video2411.dll




اینم بگم که به انواع و اقسام روش ها location هارو تغییر دادم . فایل های header به صورت کامل شناسایی میشه و به صورت strongly-type توسط خود کیوت تشخیص داده میشه قبل از اینکه آبجکتی از داخل opencv ایجاد کنم برنامه به خوبی کار میکنه و یک gui ای که ساختم بالا میاد ولی همین که یه آبجکتی مثل Mat یا VideoCapture ایجاد میکنم این ارور نمایان میشه و برنامه crash میشه ...

این ارور :

program has unexpectedly finished.
D:\prog\install\Qt\Tools\QtCreator\bin\build-tracking-Desktop_Qt_5_3_0_MinGW_32bit-Release\release\tracking.exe crashed

و این فایل .h



#ifndef DIALOG_H
#define DIALOG_H

#include "ui_dialog.h"

#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"



///////////////////////////////////////////////////////////////////
namespace ui {
class dialog;
}

///////////////////////////////////////////////////////////////////
class Dialog : public QDialog, private Ui::Dialog
{
Q_OBJECT

public:
explicit Dialog(QWidget *parent = 0);

private:
cv::VideoCapture capWebcam;
cv::Mat Original;
cv::Mat matprosecced;

QImage qimgoriginal;
QImage qimgprosecced;

std::vector<cv::Vec3f> veccircle;
std::vector<cv::Vec3f>::iterator itrcircle;



public slots:


private slots:
void on_pushButton_clicked();
};

#endif // DIALOG_H





به نظرتون علت چیست؟؟

حامد مصافی
چهارشنبه 28 مرداد 1394, 19:06 عصر
پروژه رو در حالت Release اجرا کردی، در مود Debug اجرا کن که متن خطا رو بگه بهت

ravaei
چهارشنبه 28 مرداد 1394, 19:13 عصر
پروژه رو در حالت Release اجرا کردی، در مود Debug اجرا کن که متن خطا رو بگه بهت

ممنون ... راس میگید تازه ارور هارو دیدم :افسرده:... یه اسکرین شات میزارم از اررور ها :

134472

حامد مصافی
پنج شنبه 29 مرداد 1394, 08:38 صبح
فایل‌های کتابخانه‌ای OpenCV به درستی شناسایی نشده‌اند.
یک بار Clean & Buildکن و خروچی Build Output رو هم اینجا قرار بده

ravaei
پنج شنبه 29 مرداد 1394, 10:15 صبح
فایل‌های کتابخانه‌ای OpenCV به درستی شناسایی نشده‌اند.
یک بار Clean & Buildکن و خروچی Build Output رو هم اینجا قرار بده

محتویات فولدر خروجی :
134469

اینم داخل debug :
134470

فقط یه مساله الان پروژه هم تو حالت debug و هم release این ارور هارو میده ... راستی من فقط .dll هارو امتحان کردم و مثلا تو پوشه lib (داخل opencv ) به همین نام فایل هایی وجود داره که با پسوند .a ایجاد شدند ...

در ضمن من تو پست قبلی ورژن opencv رو اشتباهی گفتم 3. ورژن 2.4.11 هستش و فایل هارو با cmake 3.2.2. ایجاد کردم .



به این صورت ها location دادم :



INCLUDEPATH += D:\prog\install\opencv\RESOURCE\install\include

#LIBS += -LD:\prog\install\opencv\RESOURCE\bin\libopencv_cor e2411.dll
#LIBS += -LD:\prog\install\opencv\RESOURCE\bin\libopencv_con trib2411.dll
#LIBS += -LD:\prog\install\opencv\RESOURCE\bin\libopencv_img proc2411.dll
#LIBS += -LD:\prog\install\opencv\RESOURCE\bin\libopencv_hig hgui2411.dll
#LIBS += -LD:\prog\install\opencv\RESOURCE\bin\libopencv_cal ib3d2411.dll
#LIBS += -LD:\prog\install\opencv\RESOURCE\bin\libopencv_fea tures2d2411.dll
#LIBS += -LD:\prog\install\opencv\RESOURCE\bin\libopencv_fla nn2411.dll
#LIBS += -LD:\prog\install\opencv\RESOURCE\bin\libopencv_gpu 2411.dll
#LIBS += -LD:\prog\install\opencv\RESOURCE\bin\libopencv_leg acy2411.dll
#LIBS += -LD:\prog\install\opencv\RESOURCE\bin\libopencv_ml2 411.dll
#LIBS += -LD:\prog\install\opencv\RESOURCE\bin\libopencv_obj detect2411.dll
#LIBS += -LD:\prog\install\opencv\RESOURCE\bin\libopencv_vid eo2411.dll
#LIBS += -LD:\prog\install\opencv\RESOURCE\lib\libopencv_ts2 411.a

LIBS += -LD:\\prog\\install\\opencv\\RESOURCE\\lib \
-libopencv_core2411.dll.a \
-libopencv_contrib2411.dll.a \
-libopencv_imgproc2411.dll.a \
-libopencv_highgui2411.dll.a \
-libopencv_calib3d2411.dll.a \
-libopencv_features2d2411.dll.a \
-libopencv_flann2411.dll.a \
-libopencv_gpu2411.dll.a \
-libopencv_legacy2411.dll.a \
-libopencv_ml2411.dll.a \
-libopencv_objdetect2411.dll.a \
-libopencv_video2411.dll.a \
-libopencv_ts2411.dll.a \





#LIBS += -LD:\\prog\\install\\opencv\\RESOURCE\\lib\libopenc v_core2411
#LIBS += -LD:\prog\install\opencv\RESOURCE\lib\libopencv_con trib2411
#LIBS += -LD:\prog\install\opencv\RESOURCE\lib\libopencv_img proc2411.dll.a
#LIBS += -LD:\prog\install\opencv\RESOURCE\lib\libopencv_hig hgui2411.dll.a
#LIBS += -LD:\prog\install\opencv\RESOURCE\lib\libopencv_cal ib3d2411.dll.a
#LIBS += -LD:\prog\install\opencv\RESOURCE\lib\libopencv_fea tures2d2411.dll.a
#LIBS += -LD:\prog\install\opencv\RESOURCE\lib\libopencv_fla nn2411.dll.a
#LIBS += -LD:\prog\install\opencv\RESOURCE\lib\libopencv_gpu 2411.dll.a
#LIBS += -LD:\prog\install\opencv\RESOURCE\lib\libopencv_leg acy2411.dll.a
#LIBS += -LD:\prog\install\opencv\RESOURCE\lib\libopencv_ml2 411.dll.a
#LIBS += -LD:\prog\install\opencv\RESOURCE\lib\libopencv_obj detect2411.dll.a
#LIBS += -LD:\prog\install\opencv\RESOURCE\lib\libopencv_vid eo2411.dll.a
#LIBS += -LD:\prog\install\opencv\RESOURCE\lib\libopencv_ts2 411.dll.a



در حالت اول ok هستش و اروری که میده همون ارور های بالاییه ولی تو حالاته دیگه (دومی و سومی) کلا میگه فلان dll پیدا نمیشه . یعنی نمیرسه به include ها مثلا تو حالت اول میگه فلان آبجکت که تو x.hpp وجود داره لیبرریش نیست

حامد مصافی
پنج شنبه 29 مرداد 1394, 12:16 عصر
منظورم متنی بود که هنگام کامپایل نمایش داده میشه،
این رو به جای مسیر‌دهی‌های قبلی در فایل pro بنویس و تست کن:


LIBS += -LD:\\prog\\install\\opencv\\RESOURCE\\bin \
-lopencv_core2411.dll \
-lopencv_contrib2411.dll \
-lopencv_imgproc2411.dll \
-lopencv_highgui2411.dll \
-lopencv_calib3d2411.dll \
-lopencv_features2d2411.dll \
-lopencv_flann2411.dll \
-lopencv_gpu2411.dll \
-lopencv_legacy2411.dll \
-lopencv_ml2411.dll \
-lopencv_objdetect2411.dll \
-lopencv_video2411.dll

ravaei
پنج شنبه 29 مرداد 1394, 14:03 عصر
متاسفانه همون ارور هارو میده


خروجی کامپایل هم اینه :

13:42:12: Running steps for project tracking... 13:42:12: Configuration unchanged, skipping qmake step.
13:42:12: Starting: "D:\prog\install\Qt\Tools\mingw482_32\bin\mingw32-make.exe"
D:/prog/install/Qt/Tools/mingw482_32/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory 'C:/Users/Administrator/Desktop/tracking build'
g++ -Wl,-subsystem,windows -mthreads -o debug\tracking.exe debug/main.o debug/dialog.o debug/moc_dialog.o -lglu32 -lopengl32 -lgdi32 -luser32 -lmingw32 -lqtmaind -LD:\prog\install\opencv\RESOURCE\bin -LD:/prog/install/Qt/5.3/mingw482_32/lib -lQt5Widgetsd -lQt5Guid -lQt5Cored
debug/main.o: In function `ZN2cv3MatD1Ev':
D:/prog/install/opencv/RESOURCE/install/include/opencv2/core/mat.hpp:278: undefined reference to `cv::fastFree(void*)'
debug/main.o: In function `ZN2cv3Mat7releaseEv':
D:/prog/install/opencv/RESOURCE/install/include/opencv2/core/mat.hpp:367: undefined reference to `cv::Mat::deallocate()'
debug/main.o: In function `ZN6DialogD1Ev':
D:/prog/install/Qt/Tools/QtCreator/bin/tracking/dialog.h:18: undefined reference to `cv::VideoCapture::~VideoCapture()'
D:/prog/install/Qt/Tools/QtCreator/bin/tracking/dialog.h:18: undefined reference to `cv::VideoCapture::~VideoCapture()'
debug/dialog.o: In function `ZN6DialogC2EP7QWidget':
D:/prog/install/Qt/Tools/QtCreator/bin/tracking/dialog.cpp:4: undefined reference to `cv::VideoCapture::VideoCapture()'
D:/prog/install/Qt/Tools/QtCreator/bin/tracking/dialog.cpp:4: undefined reference to `cv::VideoCapture::~VideoCapture()'
collect2.exe: error: ld returned 1 exit status
Makefile.Debug:80: recipe for target 'debug\tracking.exe' failed
mingw32-make[1]: *** [debug\tracking.exe] Error 1
mingw32-make[1]: Leaving directory 'C:/Users/Administrator/Desktop/tracking build'
Makefile:34: recipe for target 'debug' failed
mingw32-make: *** [debug] Error 2
13:42:15: The process "D:\prog\install\Qt\Tools\mingw482_32\bin\mingw32-make.exe" exited with code 2.
Error while building/deploying project tracking (kit: Desktop Qt 5.3.0 MinGW 32bit)
When executing step 'Make'
13:42:15: Elapsed time: ۰:۰۰:۰۲.

موقع نصب opencv هیچ گونه ارروری نداد حتی warning هم نداد ولی نمیدونم چرا نمیشناسه :متفکر:

ravaei
پنج شنبه 29 مرداد 1394, 16:09 عصر
اینجا http://ubuntuforums.org/showthread.php?t=2051889 یه نفر دقیقا مشکل منو داره و مشکلش حل شده و بهش اینو گفتن :

libraries must be placed behind objects needing them since 11.10


g++ `pkg-config --cflags opencv` easyprog.cpp `pkg-config --libs opencv` -o easyprog

طرف به این میگه command و مثل اینکه باید کنار آبجکت ها واردش کنی که اصلا من همچین کاری نکردم ... البته ایشون نسخه قبلیش ubunto11.04 بوده که تو اون نمی خواسته و 11.10 به بعد لازمه میگم شاید ویندوزم می خواد ...

ravaei
یک شنبه 01 شهریور 1394, 16:17 عصر
بلاخره درست شد .... ! من از opencv 2.4.11 استفاده می کردم و کیوت 5.3 یه جا خوندم opencv 2411 با این ورژن از کیوت سازگاری کامل نداره ...

کارایی که من کردم :

1. opencv رو پاک کردم و ورژن 231 رو نصب کردم.
2. lib هارو به صورت زیر تعریف کردم :




LIBS += D:\prog\install\opencv\mybuild\bin\libopencv_core2 31.dll
LIBS += D:\prog\install\opencv\mybuild\bin\libopencv_contr ib231.dll
LIBS += D:\prog\install\opencv\mybuild\bin\libopencv_imgpr oc231.dll
LIBS += D:\prog\install\opencv\mybuild\bin\libopencv_highg ui231.dll
LIBS += D:\prog\install\opencv\mybuild\bin\libopencv_calib 3d231.dll
LIBS += D:\prog\install\opencv\mybuild\bin\libopencv_featu res2d231.dll
LIBS += D:\prog\install\opencv\mybuild\bin\libopencv_flann 231.dll
LIBS += D:\prog\install\opencv\mybuild\bin\libopencv_gpu23 1.dll
LIBS += D:\prog\install\opencv\mybuild\bin\libopencv_legac y231.dll
LIBS += D:\prog\install\opencv\mybuild\bin\libopencv_ml231 .dll
LIBS += D:\prog\install\opencv\mybuild\bin\libopencv_objde tect231.dll
LIBS += D:\prog\install\opencv\mybuild\bin\libopencv_video 231.dll



لینکر اررور ها از بین رفت ولی برنامه کرش میشد ... که اونم با restart کردن سیستم ok شد .

انشا الله به زودی یه ویدیو واسه نصب opencv و کانفیگش روی کیوت درست میکنم .