رفتن به نوشته‌ها

برچسب: OpenCv

Code::Blocks محیط توسعه ای برای تمامی فصول!

محیط توسعه یکپارچه (IDE) Code::Blocks یک Ide خوش دست و مولتی پلتفرم است. من مدتها برای نوشتن برنامه های خودم به زبان ++C/C و استفاده از کتابخانه OpenCV از ادیتورهای متن لینوکس مثل Vim یا nano استفاده میکردم. با اینکه در صفحه انتخاب نوع پروژه در کدبلاکس اسم OpenCV دیده میشه اما هیچ وقت به سراغش نرفته بودم.
قصد دارم نوشتن یک برنامه به زبان ++C و استفاده از کتابخانه OpenCV در کدبلاکس را شرح مختصر بدهم.
ابتدانوع پروژه را OpenCV انتخاب کرده و مراحل ساخت پروژه جدید را به اتمام میرسانیم. ابتدا یک پروژه جدید میسازیم:

کد پیش فرض نمایش یک عکس در فایل main.cpp قرار میگیرد و عکس مربوطه به پروژه پیوست میشود.
برای معرفی کتابخانه OpenCV به کامپایلر (در اینجا GCC) مراحل زیر را انجام میدهیم:
از منوی Project قسمت Build Option را انتخاب میکنیم.
در سربرگ Compiler Settings به صفحه Other compiler option میرویم و عبارت زیر را اضافه میکنیم:

`pkg-config --cflags opencv`

در سربرگ Linker settings به Other linker option عبارت زیر را اضافه میکنیم:

`pkg-config --libs opencv`

در صورتیکه مراحل را به درستی انجام داده باشید. با Build کردن و Run کردن برنامه عکس پیوست شده به برنامه نمایش داده خواهد شد.
موفق باشید.

خارج شدن از نظر

استفاده از کتابخانه OpenCV در Qt

داشتم این مطلب رو بصورت جدا برای خودم مینوشتم که دستورات رو فراموش نکنم، گفتم چه خوبه که بصورت عمومی منتشرش کنم، شاید گره ای از کار کسی باز کرد. البته همچنان نوشتن ادامه Ncurses و Shell Script در دستوره کاره !
قبلا کتابخانه OpenCV را معرفی کرده بودم، خیلی ها علاقمندند از کتابخانه‌های Qt و OpenCV بصورت توامان استفاده کنند، که با اعمال تغییرات ساده ای در فایل pro. در پروژه ای که می‌سازیم میتوانیم OpenCV را به Qt بشناسانیم!
برای ایجاد یک پروژه جدید در Qt بصورت زیر عمل می‌کنیم :
از منوی فایل گزینه New Project را می‌زنیم و سپس Qt Widgets Application را انتخاب می‌کنیم و بقیه موارد را به صورت پیش فرض رها می‌کنیم.
با استفاده از دستور

pkg-config --cflags opencv

آدرس هدر فایل های کتابخانه را بدست می‌آوریم . احتمالا چیزی شبیه به این خواهد بود :

-I/usr/include/opencv

در فایل pro. در پروژه برنامه ما، دستور زیر را وارد می‌کنیم:

INCLUDEPATH += /usr/include/opencv

توجه کنید که قسمت سمت راست دستور بالا از pkg-config -‌-cflags opencv بدست می‌آید ( البته بدون کاراکتر I در ابتدای مسیر )
یک بار دیگر از ترمینال استفاده کرده و آدرس کتابخانه‌های OpenCV را بدست می‌آوریم:

pkg-config --libs opencv

که احتمالا چیزی شبیه به

-L/lib64 -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_nonfree -lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab -ltbb -lGL -lGLU -lrt -lpthread -lm -ldl

خواهد بود.
در فایل pro. در یک خط جدید دستور زیر را وارد می‌کنیم:

LIBS += -L/lib64 -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_nonfree -lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab -ltbb -lGL -lGLU -lrt -lpthread -lm -ldl

البته با توجه به پروژه خود تنها کتابخانه‌های مورد نیاز خود را اضافه می‌کنیم.
در انتها برای آزمایش کارکرد صحیح یک برنامه ساده بصورت زیر در فایل mainwindow.cpp می‌نویسیم:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <opencv2/opencv.hpp>
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->;setupUi(this);
    cv::Mat inputImage = cv::imread("/home/ali/Picture/lfs-puzzle.jpg");
    cv::imshow("Display Image", inputImage);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}

بدیهیست آدرس عکس مورد نظر برای نمایش باید آدرس معتبری باشد .

این ترجمه آزادی بود از نوشته Rodrigo Berriel در این باره .

خارج شدن از نظر