ورود

View Full Version : QT + Opencv



pumper
جمعه 11 فروردین 1391, 16:09 عصر
ُسلام کسی اینجا موفق شده opencv رو تو محیط qt استفاده کنه ؟
اگه هست بگه آخه من نمی تونم به هیچ عنوان اینکارو بکنم.
qtsdk 1.2
opencv 2.3.1 superpack

kitten
جمعه 11 فروردین 1391, 19:04 عصر
بله دوست عزیز
opencv و qt به صورت کامل با هم سازگار هستند و من این کار را انجام دادم و از امکانات opencv در qt استفاده کردم
شما فقط کافیه include ها را به ide تون اضافه کنید و همچنین lib ها را هم به ide تون اضافه کنید بعدش می تونید از opencv داخل qt استفاده کنید و همراه برنامهتون dll های مورد نیاز رو قرار بدید

pumper
جمعه 11 فروردین 1391, 20:13 عصر
سلام
من همین کارا رو کردم اما نتیجه نداد.
فایل pro :

TEMPLATE=app
CONFIG+=console
CONFIG-=qt
SOURCES+=main.cpp
INCLUDEPATH+=C:\opencv\build\include\
LIBS+=C:\Opencv\build\x86\mingw\lib\libopencv_cali b3d231.dll.a\
C:\Opencv\build\x86\mingw\lib\libopencv_contrib231 .dll.a\
C:\Opencv\build\x86\mingw\lib\libopencv_core231.dl l.a\
C:\Opencv\build\x86\mingw\lib\libopencv_features2d 231.dll.a\
C:\Opencv\build\x86\mingw\lib\libopencv_flann231.d ll.a\
C:\Opencv\build\x86\mingw\lib\libopencv_gpu231.dll .a\
C:\Opencv\build\x86\mingw\lib\libopencv_highgui231 .dll.a\
C:\Opencv\build\x86\mingw\lib\libopencv_imgproc231 .dll.a\
C:\Opencv\build\x86\mingw\lib\libopencv_legacy231. dll.a\
C:\Opencv\build\x86\mingw\lib\libopencv_ml231.dll. a\
C:\Opencv\build\x86\mingw\lib\libopencv_objdetect2 31.dll.a\
C:\Opencv\build\x86\mingw\lib\libopencv_video231.d ll.a

و فایل برنامه :

#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
usingnamespacecv;
intmain(void)
{ IplImage*img=cvLoadImage("c:/IMG_0300.jpg");
cvNamedWindow("window");
cvShowImage("window",img);
cvWaitKey(0);
return1;
}

برنامه بدون ارور بیلد میشه اما فقط یه پنجره کنسول باز میشه که میگه اینتر رو برا خاتمه بزنید و توی خروجی برنامه توی qt creator nhvdl :

Starting C:\Qtprojects\opencv1\opencvtest1-build-desktop-Qt_4_8_0_for_Desktop_-_MinGW__Qt_SDK__Debug\debug\opencvtest1.exe...
C:\Qtprojects\opencv1\opencvtest1-build-desktop-Qt_4_8_0_for_Desktop_-_MinGW__Qt_SDK__Debug\debug\opencvtest1.exe exited with code 0


در حالی که باید یه پنجره نمایش داده بشه که عکس مورد نظر رو نمایش میده.

kitten
جمعه 11 فروردین 1391, 21:50 عصر
اینو امتحان کن:
Mat image;
image = imread("c:/IMG_0300.jpg", CV_LOAD_IMAGE_COLOR); // Read the file

if(! image.data ) // Check for invalid input
{
cout << "Could not open or find the image" << std::endl ;
return -1;
}

namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display.
imshow( "Display window", image ); // Show our image inside it.

waitKey(0); // Wait for a keystroke in the window
return 0;
using namespace cv;
یادت نره

pumper
جمعه 11 فروردین 1391, 22:30 عصر
سلام ممنون از کدتون اما اینم همون نتیجه رو میده
من که واقعا گیج شدم

pumper
جمعه 11 فروردین 1391, 22:32 عصر
اگه ممنکه پروژه رو تست کنید

kitten
جمعه 11 فروردین 1391, 22:47 عصر
دوست عزیز
من از کد زیر استفاده می کنم در ویژوال استودیو و برنامه واسه من به خوبی اجرا می شه کامپایل شده برنامه رو واستون میفرستم
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main( int argc, char** argv )
{
if( argc != 2)
{
cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
return -1;
}

Mat image;
image = imread(argv[1], CV_LOAD_IMAGE_COLOR); // Read the file

if(! image.data ) // Check for invalid input
{
cout << "Could not open or find the image" << std::endl ;
return -1;
}

namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display.
imshow( "Display window", image ); // Show our image inside it.

waitKey(0); // Wait for a keystroke in the window
return 0;
}
این طوری از برنامه استفاده کنید در cmd:

opencv.exe c:\1.jpg
اینم باینری:
http://www.4shared.com/rar/Eqgmdwyn/Release.html

pumper
شنبه 12 فروردین 1391, 09:52 صبح
سلام آقا یه نکته ای :
وقتی من بیلد رو روی vc10 میگذارم برنامه درست اجرا میشه اما وقتی روی mingw می خوام بیلد کنم همون اتفاق قبلی تکرار میشه کسی میدونه مشکل کجاست ؟

یه سوال دیگه اگه من بخوام برناممو توی qtcreator به صورت استاتیک بیلد کنم چکار باید بکنم ؟

kitten
شنبه 12 فروردین 1391, 10:05 صبح
اگه بخواهید برنامه رو به صورت استاتیک بیلد کنید اولا باید از لایبرری های استاتیک از opencv و qt استفاده کنید که لایبرری استاتیک opencv هست ولی واسه qt شما باید qt را از روی سورس به صورت استاتیک کامپایل کنید و بعدش فقط کافیه static را به فایل pro اضافه کنید یعنی:

CONFIG += static

pumper
شنبه 12 فروردین 1391, 17:10 عصر
من بالاخره مشکل رو حل کردم.
واسه اینکار cmake رو دانلود کردم mingw32 رو هم دانلود کردمtdm-gcc-4.6.1
بعد opencv رو با پشتیبانی از qt یلد کردم و برنامه قرار داده شده در پست رو مجددا بیلد و اجرا کردم و اینبار بدون مشکل اجرا شد.
امیدوارم این راه حل به درد بکی دیگه بخوره