Rumah > Artikel > pembangunan bahagian belakang > 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; }
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);
首先,我们声明一个Mat对象来储存模糊后的图像。接下来,我们使用GaussianBlur
函数应用高斯模糊。在函数中,第一个参数是要模糊的图像,第二个参数是将储存结果的Mat对象,第三个参数是模糊核的大小,第四个参数是标准差,可以选择将其设为0。
最后,我们在新窗口中显示模糊后的图像。
步骤3:保存图像
当您已经完成对图像的处理后,您可能想将结果保存到文件中。可以使用imwrite
函数完成此操作。以下是代码示例:
imwrite("blur.jpg", blurred_image);
这将把过滤完的模糊图像保存为blur.jpg
#include🎜Mula-mula, kami mengisytiharkan objek Mat untuk menyimpan imej kabur. Seterusnya, kami menggunakan kabur Gaussian menggunakan fungsi#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; }
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!