Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melakukan penglihatan mesin dan pemprosesan imej dalam C++?

Bagaimana untuk melakukan penglihatan mesin dan pemprosesan imej dalam C++?

WBOY
WBOYasal
2023-08-27 15:05:031187semak imbas

Bagaimana untuk melakukan penglihatan mesin dan pemprosesan imej dalam C++?

Bagaimana untuk melakukan penglihatan mesin dan pemprosesan imej dalam C++?

Penglihatan mesin dan pemprosesan imej adalah cabang penting dalam bidang sains komputer dan digunakan secara meluas dalam pengecaman imej, pengesanan sasaran, pengecaman muka dan bidang lain. Dalam C++, terdapat banyak perpustakaan dan alatan berkuasa yang boleh membantu kami melaksanakan visi mesin dan fungsi pemprosesan imej. Artikel ini akan memperkenalkan cara menggunakan perpustakaan OpenCV untuk melaksanakan penglihatan mesin dan pemprosesan imej dalam C++, dan memberikan contoh kod yang sepadan.

  1. Pasang perpustakaan OpenCV
    Sebelum kita mula, kita perlu memasang perpustakaan OpenCV terlebih dahulu. OpenCV ialah perpustakaan penglihatan komputer sumber terbuka merentas platform yang menyediakan pelbagai pemprosesan imej dan algoritma penglihatan mesin. Anda boleh memuat turun pakej pemasangan yang sepadan dari tapak web rasmi OpenCV (https://opencv.org/), dan kemudian memasangnya mengikut dokumentasi rasmi.
  2. Memuatkan dan memaparkan imej
    Mula-mula, kita perlu memuatkan imej dan kemudian memaparkannya. Berikut ialah contoh kod mudah:

    #include <opencv2/opencv.hpp>
    
    int main() {
     // 加载图像
     cv::Mat image = cv::imread("image.jpg", cv::IMREAD_COLOR);
    
     // 检查图像是否成功加载
     if (image.empty()) {
         std::cerr << "Failed to load image" << std::endl;
         return -1;
     }
    
     // 创建一个窗口并显示图像
     cv::namedWindow("Image", cv::WINDOW_NORMAL);
     cv::imshow("Image", image);
    
     // 等待键盘输入
     cv::waitKey(0);
    
     return 0;
    }

    Dalam contoh ini, kami menggunakan fungsi imread函数加载一张图像,并将其存储在cv::Mat对象中。然后,我们创建一个窗口,并使用imshow函数显示图像。最后,使用waitKey untuk menunggu pengguna menekan sebarang kekunci sebelum menutup tetingkap.

  3. Pemprosesan Imej
    Selepas memuatkan dan memaparkan imej, kami boleh melakukan beberapa operasi pemprosesan pada imej. Contohnya, anda boleh melaraskan kecerahan dan kontras imej, melakukan pengesanan tepi atau menggunakan penapis. Berikut ialah beberapa contoh operasi pemprosesan imej biasa:

3.1 Melaraskan Kecerahan dan Kontras

#include <opencv2/opencv.hpp>

int main() {
    // 加载图像
    cv::Mat image = cv::imread("image.jpg", cv::IMREAD_COLOR);

    // 将图像转换为浮点类型
    cv::Mat image_float;
    image.convertTo(image_float, CV_32F);

    // 调整亮度和对比度
    cv:: Mat adjusted_image = image_float * 1.2 + 20;

    // 将图像转换回无符号8位整数类型
    cv::Mat output_image;
    adjusted_image.convertTo(output_image, CV_8U);

    // 创建一个窗口并显示图像
    cv::namedWindow("Output", cv::WINDOW_NORMAL);
    cv::imshow("Output", output_image);

    // 等待键盘输入
    cv::waitKey(0);

    return 0;
}

Dalam contoh ini, kita mula-mula menukar imej kepada jenis titik terapung dan kemudian melaraskannya dengan mendarab dengan faktor dan menambah Kecerahan mengimbangi dan kontras. Akhirnya, imej ditukar kembali kepada jenis integer 8-bit yang tidak ditandatangani dan imej yang dilaraskan dipaparkan.

3.2 Pengesanan Tepi

#include <opencv2/opencv.hpp>

int main() {
    // 加载图像
    cv::Mat image = cv::imread("image.jpg", cv::IMREAD_GRAYSCALE);

    // 使用Canny算子进行边缘检测
    cv::Mat edges;
    cv::Canny(image, edges, 100, 200);

    // 创建一个窗口并显示边缘图像
    cv::namedWindow("Edges", cv::WINDOW_NORMAL);
    cv::imshow("Edges", edges);

    // 等待键盘输入
    cv::waitKey(0);

    return 0;
}

Dalam contoh ini, kita mula-mula menukar imej kepada imej skala kelabu, dan kemudian menggunakan operator Canny untuk pengesanan tepi. Akhir sekali, kami memaparkan imej tepi yang dikesan.

Di atas hanya menunjukkan sebahagian kecil daripada fungsi pemprosesan imej Perpustakaan OpenCV juga menyediakan banyak pemprosesan imej yang berkuasa dan algoritma penglihatan mesin, seperti pembahagian imej, pengekstrakan ciri, padanan corak, dll. Anda boleh memilih fungsi dan kaedah yang sepadan mengikut keperluan khusus anda.

Ringkasnya, kami boleh menggunakan perpustakaan C++ dan OpenCV untuk melaksanakan pelbagai visi mesin dan fungsi pemprosesan imej. Dengan memuatkan dan memaparkan imej, dan menggunakan operasi pemprosesan yang berbeza, kami boleh melaksanakan banyak aplikasi yang menarik dan praktikal. Jika anda berminat dengan penglihatan mesin dan pemprosesan imej, anda juga boleh cuba menggunakan C++ dan OpenCV untuk meneroka lebih banyak kemungkinan.

Atas ialah kandungan terperinci Bagaimana untuk melakukan penglihatan mesin dan pemprosesan imej dalam C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn