تبدیل cv::Mat به Pix و بالعکس - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

تبدیل cv::Mat به Pix و بالعکس

0 امتیاز
سلام.

قصد دارم از کتابخانه leptonica استفاده کنم به دنبال توابعی هستم که بتونم با آن cv::Mat را به PIX تبدیل کنم و بر عکس .کلا قصدم این هستش تصاویری که در opencv دارم را با برخی از توابع leptonica پردازش کنم و مجدد نتیجه را به تصویر cv::Mat تبدیل کنم.
سوال شده تیر 17, 1401  بوسیله ی Mr.Hadi (امتیاز 21)   1 3

1 پاسخ

0 امتیاز
برای تبدیل تصویر cv::mat به تصویر Leptonica PIX، می‌توانید از تابع pixCreateFromMat از کتابخانه Leptonica استفاده کنید. تابع یک شی cv::mat را به عنوان آرگومان می گیرد و یک شی PIX را برمی گرداند.
 
در اینجا یک کد نمونه در C++ آمده است:
#include <opencv2/opencv.hpp>
#include <leptonica/allheaders.h>

int main() {
    cv::Mat mat_image = cv::imread("input.jpg", cv::IMREAD_GRAYSCALE);
    PIX *pix_image = pixCreateFromMat(mat_image.data, mat_image.cols, mat_image.rows, 8);

    // Perform processing on the pix_image using Leptonica functions...

    // Convert the processed PIX image back to a cv::Mat image
    cv::Mat mat_result(pix_image->h, pix_image->w, CV_8UC1, pix_image->data, pix_image->wpl * 4);
    cv::imwrite("output.jpg", mat_result);

    // Clean up memory
    pixDestroy(&pix_image);

    return 0;
}

 

توجه داشته باشید که تابع pixCreateFromMat فیلد داده شی cv::mat را می گیرد که حاوی داده های پیکسل خام تصویر است. این تابع همچنین تعداد ستون‌ها و ردیف‌های تصویر و همچنین تعداد بیت‌ها در هر پیکسل را می‌گیرد (در این مثال، 8).
 
مهم است که از تابع pixDestroy برای آزاد کردن حافظه استفاده شده توسط تصویر PIX پس از اتمام پردازش آن استفاده کنید.
پاسخ داده شده بهمن 14, 1401 بوسیله ی عباس همت خواه (امتیاز 436)   2 8 13
...