استفاده از کتابخانه 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 در این باره .

2 Comments

  1. فاروق کریمی زاده

    گزارش پیوند خراب: «قبلا»
    موفق باشید.

    Reply
    1. علی (Post author)

      ;لینک تصحیح شد . ممنونم

      Reply

Leave a Comment

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *