Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk menulis program pemprosesan imej mudah dalam C++?

Bagaimana untuk menulis program pemprosesan imej mudah dalam C++?

WBOY
Lepaskan: 2023-11-03 09:58:50
asal
832 orang telah melayarinya

Bagaimana untuk menulis program pemprosesan imej mudah dalam C++?

Dalam artikel ini, kita akan belajar cara menulis program pemprosesan imej yang mudah melalui C++. Kami akan merangkumi semua asas daripada membaca imej hingga menggunakan penapis dan menyimpan imej.

Sebelum anda mula menulis program pemprosesan imej, anda perlu memasang perpustakaan OpenCV. OpenCV ialah perpustakaan penglihatan komputer yang popular dengan ciri yang kaya untuk membantu anda mencipta aplikasi pemprosesan imej berkualiti tinggi.

Langkah 1: Muatkan Imej

Untuk memuatkan imej, anda perlu mengisytiharkan objek OpenCV yang dipanggil Mat. Berikut ialah kod untuk memuatkan imej daripada fail:

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;

int main(int argc, char** argv){
    Mat image;
    image = imread(argv[1], IMREAD_COLOR);

    if(! image.data ) {
        std::cout <<  "Could not open or find the image" << std::endl;
        return -1;
    }

    namedWindow("Display window", WINDOW_AUTOSIZE);
    imshow("Display window", image);

    waitKey(0);
    return 0;
}
Salin selepas log masuk

Kod di atas akan digunakan untuk memuatkan imej melalui OpenCV. Program ini akan membaca nama fail yang dimasukkan dari baris arahan terlebih dahulu. Jika fail tidak ditemui, pengguna digesa bahawa fail itu tidak boleh dibuka atau ditemui.

Jika imej berjaya dimuatkan, cipta tetingkap untuk memaparkannya. Gunakan fungsi imshow untuk memaparkan imej dan gunakan waitKey untuk menunggu tindakan pengguna, seperti menekan sebarang kekunci pada papan kekunci untuk menutup tetingkap. imshow函数显示图像并使用waitKey等待用户操作,例如按下键盘上的任意键以关闭窗口。

步骤2:应用过滤器

现在我们已经加载了图像,接下来可以开始应用一些过滤器。OpenCV库提供了许多内置函数可以帮助我们应用各种过滤器,例如添加模糊效果,边缘检测或其它图像处理中常见的一些操作。

以下代码将向图像添加一个高斯模糊滤波器:

Mat blurred_image;
GaussianBlur(image, blurred_image, Size(7,7), 0);

namedWindow("Blurred Image", WINDOW_AUTOSIZE);
imshow("Blurred Image", blurred_image);

waitKey(0);
Salin selepas log masuk

首先,我们声明一个Mat对象来储存模糊后的图像。接下来,我们使用GaussianBlur函数应用高斯模糊。在函数中,第一个参数是要模糊的图像,第二个参数是将储存结果的Mat对象,第三个参数是模糊核的大小,第四个参数是标准差,可以选择将其设为0。

最后,我们在新窗口中显示模糊后的图像。

步骤3:保存图像

当您已经完成对图像的处理后,您可能想将结果保存到文件中。可以使用imwrite函数完成此操作。以下是代码示例:

imwrite("blur.jpg", blurred_image);
Salin selepas log masuk

这将把过滤完的模糊图像保存为blur.jpg

Langkah 2: Gunakan Penapis

Sekarang kita telah memuatkan imej, kita boleh mula menggunakan beberapa penapis. Pustaka OpenCV menyediakan banyak fungsi terbina dalam untuk membantu kami menggunakan pelbagai penapis, seperti menambahkan kesan kabur, pengesanan tepi atau operasi lain yang biasa dalam pemprosesan imej.

Kod berikut akan menambah penapis kabur Gaussian pada imej: 🎜
#include 
#include 

using namespace cv;

int main(int argc, char** argv){
    Mat image;
    image = imread(argv[1], IMREAD_COLOR);

    if(! image.data ) {
        std::cout <<  "Could not open or find the image" << std::endl;
        return -1;
    }

    namedWindow("Display window", WINDOW_AUTOSIZE);
    imshow("Display window", image);

    Mat blurred_image;
    GaussianBlur(image, blurred_image, Size(7,7), 0);

    namedWindow("Blurred Image", WINDOW_AUTOSIZE);
    imshow("Blurred Image", blurred_image);

    imwrite("blur.jpg", blurred_image);

    waitKey(0);
    return 0;
}
Salin selepas log masuk
🎜Mula-mula, kami mengisytiharkan objek Mat untuk menyimpan imej kabur. Seterusnya, kami menggunakan kabur Gaussian menggunakan fungsi GaussianBlur. Dalam fungsi, parameter pertama ialah imej yang akan dikaburkan, parameter kedua ialah objek Mat yang akan menyimpan hasilnya, parameter ketiga ialah saiz kernel kabur, dan parameter keempat ialah sisihan piawai untuk menetapkannya kepada 0. 🎜🎜Akhir sekali, kami memaparkan imej kabur dalam tetingkap baharu. 🎜🎜Langkah 3: Simpan imej🎜🎜Apabila anda telah selesai memproses imej, anda mungkin mahu menyimpan hasilnya ke dalam fail. Ini boleh dilakukan menggunakan fungsi imwrite. Berikut ialah contoh kod: 🎜rrreee🎜Ini akan menyimpan imej kabur yang ditapis sebagai blur.jpg. 🎜🎜Contoh Kod Penuh🎜rrreee🎜Dalam artikel ini, kami belajar cara menulis program pemprosesan imej mudah menggunakan perpustakaan C++ dan OpenCV. Anda boleh memanjangkannya untuk memasukkan lebih banyak penapis seperti pengesanan tepi, mengasah, dsb. 🎜

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

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan