انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: نحوه کامپایل opencv و چند کتابخانه دیگر  (دفعات بازدید: 1503 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
نحوه کامپایل opencv و چند کتابخانه دیگر
« : 23 امرداد 1403، 07:35 ب‌ظ »
درود
امروز مجبور شدم که با زبا س پ پ و با این کتابخانه یک پروژّ کوچیک انجام بدم.
اول کتابخانه opencv4 رو با استفاده از دستور زیر نصب کردم
sudo pacman -Sy opencv
وقتی هم که میخوام از فایل های سرآیند استفاده کنم اول باید برم تو پوشه opencv4  و بعد opencv2  و فایل های سرآبند خودم رو انتخاب کنم.
وقتی هم که میخواستم از توابع و متد ها استفاده کنم همش ارور میداد و میگفت که این فایل سرایند وجود نداره. درصورتی که من چک کردم و وجود داشت.
به خاطر همین opencv2/  رو یک دایرکتور به عقب انتقال دادم و همه هشدار ها رفت.
من از هوش مصنوعی پرسیدم چطور کامپایل کنه و اونم گفت اینطور:‌

g++ webcam.cpp -o webcam pkg-config --cflags --libs opencv4
اما خروجی زیر رو میده:
g++: error: unrecognized command-line option ‘--cflags’
g++: error: unrecognized command-line option ‘--libs’; did you mean ‘--libs=’?
واقعا کلافه شدم نمیدونم باید چیکار کنم.
کد برنامه :
#include <cstdio>
#include <iostream>
#include <opencv2/core/mat.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/opencv.hpp>
#include <opencv2/videoio.hpp>

int main()
{
    cv::VideoCapture cap(0);
    if(!cap.isOpened())
    {
        perror("can not open camera");
        return -1;
    }
    cv::Mat frame;
    cap >> frame;
    if(frame.empty())
    {
        perror("can not capture a frame");
        return -1;
    }
    cv::imwrite("captured_image", frame);
    cv::imshow("captured image", frame);
    cv::waitKey(0);
    cap.release();
    cv::destroyAllWindows() ;
    return 0;
}
« آخرین ویرایش: 23 امرداد 1403، 08:46 ب‌ظ توسط learner:~$ »
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : نحوه کامپایل opencv
« پاسخ #1 : 23 امرداد 1403، 08:45 ب‌ظ »
#include <libuvc/libuvc.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <jpeglib.h>

void save_jpeg(const char *filename, unsigned char *image_buffer, int width, int height) {
    struct jpeg_compress_struct cinfo;
    struct jpeg_error_mgr jerr;

    FILE *outfile;
    JSAMPROW row_pointer[1];

    cinfo.err = jpeg_std_error(&jerr);
    jpeg_create_compress(&cinfo);

    if ((outfile = fopen(filename, "wb")) == NULL) {
        fprintf(stderr, "Can't open %s\n", filename);
        return;
    }
    jpeg_stdio_dest(&cinfo, outfile);

    cinfo.image_width = width;
    cinfo.image_height = height;
    cinfo.input_components = 3; // تعداد کانال‌های رنگ (RGB)
    cinfo.in_color_space = JCS_RGB;

    jpeg_set_defaults(&cinfo);
    jpeg_start_compress(&cinfo, TRUE);

    while (cinfo.next_scanline < cinfo.image_height) {
        row_pointer[0] = &image_buffer[cinfo.next_scanline * width * 3];
        jpeg_write_scanlines(&cinfo, row_pointer, 1);
    }

    jpeg_finish_compress(&cinfo);
    fclose(outfile);
}

void frame_callback(uvc_frame_t *frame, void *ptr) {
    unsigned char *image_buffer = malloc(frame->width * frame->height * 3); // فرض بر این است که تصویر RGB است.


    save_jpeg("captured_image.jpg", image_buffer, frame->width, frame->height);

    free(image_buffer);
}

int main() {
    uvc_context_t *ctx;
    uvc_device_t *dev;
    uvc_device_handle_t *devh;
    uvc_stream_ctrl_t ctrl;

    if (uvc_init(&ctx, NULL) < 0) {
        fprintf(stderr, "Error initializing libuvc\n");
        return -1;
    }

    if (uvc_find_device(ctx, &dev, 0, 0, NULL) < 0) {
        fprintf(stderr, "Device not found\n");
        return -1;
    }

    if (uvc_open(dev, &devh) < 0) {
        fprintf(stderr, "Unable to open device\n");
        return -1;
    }

    uvc_get_stream_ctrl_format_size(devh, &ctrl, UVC_FRAME_FORMAT_YUYV, 640, 480, 30);

    uvc_start_streaming(devh, &ctrl, frame_callback, NULL, 0);

    printf("Press Enter to stop streaming...\n");
    getchar();

    uvc_stop_streaming(devh);
    uvc_close(devh);
    uvc_unref_device(dev);
    uvc_exit(ctx);

    return 0;
}
gcc main.c -luvc -ljpeg
./web: error while loading shared libraries: libuvc.so.0: cannot open shared object file: No such file or directory
« آخرین ویرایش: 24 امرداد 1403، 10:05 ق‌ظ توسط learner:~$ »
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین esmaeelE

  • ناظر انجمن
  • *
  • ارسال: 1268
  • جنسیت : پسر
پاسخ : نحوه کامپایل opencv و چند کتابخانه دیگر
« پاسخ #2 : 25 امرداد 1403، 11:13 ق‌ظ »
خطا نشون می‌ده که کتابخانه libuvc.so.0 به درستی نصب نشده در نتیجه gcc نتونسته مرحلهٔ پیوند را انجام دهد.
بررسی کنید و از روش صحیحی کتابخانه‌های مورد نظر را روی توزیعتان نصب کنید.

ابتدا سعی کنید ساده‌ترین مثال hello world را راه‌اندازی کنید.


آفلاین 🇬🇧بریتانیای کبیر🇬🇧

  • High Hero Member
  • *
  • ارسال: 2637
  • جنسیت : پسر
  • GOD SAVE THE KING/QUEEN
پاسخ : نحوه کامپایل opencv و چند کتابخانه دیگر
« پاسخ #3 : 25 امرداد 1403، 12:16 ب‌ظ »
در دبیان باید بسته‌ی libucv0 رو نصب کنی ولی در آرچ برو در aur بسته‌ی libuvc را نصب کن ببین چی میشه.
« آخرین ویرایش: 25 امرداد 1403، 12:21 ب‌ظ توسط بریتانیای کبیر »
🇬🇧🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁷󠁬󠁳󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿🇬🇧

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : نحوه کامپایل opencv و چند کتابخانه دیگر
« پاسخ #4 : 25 امرداد 1403، 12:29 ب‌ظ »
در دبیان باید بسته‌ی libucv0 رو نصب کنی ولی در آرچ برو در aur بسته‌ی libuvc را نصب کن ببین چی میشه.
با استفاده از  yay  اینکار رو کردم الان مشکلم  opencv  هست
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین 🇬🇧بریتانیای کبیر🇬🇧

  • High Hero Member
  • *
  • ارسال: 2637
  • جنسیت : پسر
  • GOD SAVE THE KING/QUEEN
پاسخ : نحوه کامپایل opencv و چند کتابخانه دیگر
« پاسخ #5 : 25 امرداد 1403، 12:31 ب‌ظ »
نقل‌قول
با استفاده از  yay  اینکار رو کردم الان مشکلم  opencv  هست
الآن مشکلش چیه؟ خطایی داده؟
🇬🇧🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁷󠁬󠁳󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿🇬🇧

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : نحوه کامپایل opencv و چند کتابخانه دیگر
« پاسخ #6 : 25 امرداد 1403، 01:00 ب‌ظ »
چطور باید opencv رو include  و  compile بکنم؟
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین 🇬🇧بریتانیای کبیر🇬🇧

  • High Hero Member
  • *
  • ارسال: 2637
  • جنسیت : پسر
  • GOD SAVE THE KING/QUEEN
پاسخ : نحوه کامپایل opencv و چند کتابخانه دیگر
« پاسخ #7 : 25 امرداد 1403، 01:12 ب‌ظ »
بزن ببین چی میشه
g++ -lopencv4
🇬🇧🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁷󠁬󠁳󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿🇬🇧

آفلاین Aminavy-r

  • Jr. Member
  • *
  • ارسال: 59
  • جنسیت : پسر
پاسخ : نحوه کامپایل opencv و چند کتابخانه دیگر
« پاسخ #8 : 25 امرداد 1403، 02:17 ب‌ظ »
سلام!
دستوری که برای کامپایل اجرا می کنی اشتباهه!
pkg-config یه برنامه هست که فلگ و مسیر درست کتابخونه های نصب شده رو نشون میده (به stdout میفرسته) و تو باید خروجی اون رو به عنوان پارامتر خط فرمان به کامپایلر بدی.

نقل‌قول
g++ webcam.cpp -o webcam pkg-config --cflags --libs opencv4

باید اینجوری باشه:
g++ webcam.cpp -o  webcam $(pkg-config --cflags --libs opencv4)
در مورد اسم کتابخونه مطمئن نیستم. اگه اسمش رو درست نوشتی پس باید همون دستوری رو که گفتم اجرا کنی.

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : نحوه کامپایل opencv و چند کتابخانه دیگر
« پاسخ #9 : 25 امرداد 1403، 05:55 ب‌ظ »
فعلا تو اضافه کردن فایل سرآیند به مشکل خوردم :
اضلا چطور باید اضافه بشه این چرا اینجوریه!
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین nixoeen

  • ناظر انجمن
  • *
  • ارسال: 4869
  • جنسیت : پسر
  • masoft قدیم
پاسخ : نحوه کامپایل opencv و چند کتابخانه دیگر
« پاسخ #10 : 25 امرداد 1403، 06:00 ب‌ظ »
احتمالا خوندن یک کتاب سی‌پلاس‌پلاس بهتر و سریع‌تر بهتون کمک می‌کنه تا اینکه سعی کنید با تست کردن یاد بگیرید.
#include "PATH"[/code]

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : نحوه کامپایل opencv و چند کتابخانه دیگر
« پاسخ #11 : 25 امرداد 1403، 06:11 ب‌ظ »
احتمالا خوندن یک کتاب سی‌پلاس‌پلاس بهتر و سریع‌تر بهتون کمک می‌کنه تا اینکه سعی کنید با تست کردن یاد بگیرید.
#include "PATH"[/code]

خیلی عجیبه:
( مثلا الان من برم دستورات زیر رو بزنم ۹۰ درصد ارور ها از بین میره :
cd /usr/include/opencv4
mv opencv2 ..
اما خب این فکر نکنم درست باشه  و فکر کنم کامپایل مسیر رو گم بکنه.)
« آخرین ویرایش: 25 امرداد 1403، 06:15 ب‌ظ توسط learner:~$ »
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین 🇬🇧بریتانیای کبیر🇬🇧

  • High Hero Member
  • *
  • ارسال: 2637
  • جنسیت : پسر
  • GOD SAVE THE KING/QUEEN
پاسخ : نحوه کامپایل opencv و چند کتابخانه دیگر
« پاسخ #12 : 25 امرداد 1403، 06:55 ب‌ظ »
برو کمی خود پرونده هاشو ببین چحوری پیشنمونه سازی کرده. چون کتابخانه های خودش به هم وصلن.
دستی چیزی رو تغیر نده.
🇬🇧🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁷󠁬󠁳󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿🇬🇧

آفلاین learner:~$

  • Hero Member
  • *
  • ارسال: 816
  • جنسیت : پسر
  • روزی روز گاری در گنو/لینوکس
پاسخ : نحوه کامپایل opencv و چند کتابخانه دیگر
« پاسخ #13 : 25 امرداد 1403، 09:24 ب‌ظ »
سلام دوباره

میشه راهنمایی کنید که چطور دستی opencv رو نصب و build کنم؟ مستندات رو خوندم اما میترسم که اشتباه بکنم.
مثل سمی کالونم( ; ).
خواستار پایان.
محکوم به کامپایل.

آفلاین nixoeen

  • ناظر انجمن
  • *
  • ارسال: 4869
  • جنسیت : پسر
  • masoft قدیم
پاسخ : نحوه کامپایل opencv و چند کتابخانه دیگر
« پاسخ #14 : 25 امرداد 1403، 11:30 ب‌ظ »
توی اوبونتو و دبیان کافیه libopencv-dev رو نصب کنید. نیازی به نصب دستی اون نیست.