一、OpenCV簡介
????????OpenCV(Open Source Computer Vision Library)是一個開源的跨平臺計算機視覺和機器學習庫,廣泛應用于圖像處理、視頻分析、物體檢測等領域。它提供了豐富的算法和高效的工具集,支持C++、Python等多種語言,涵蓋特征提取、目標識別、3D重建等功能,被廣泛應用于人臉識別、自動駕駛、醫學影像分析及工業檢測等場景。憑借其開源特性、強大性能和活躍社區,OpenCV成為開發者實現計算機視覺任務的首選框架。
二、在Linux系統中開發OpenCV
1、創建一個代碼文件夾code,并在其中創建 test1.cpp 文件。
2、將以下代碼復制到 test1.cpp 文件中:
#include <opencv2/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;int main(int argc, char** argv)
{CvPoint center;double scale = -3;IplImage* image = cvLoadImage("lena.jpg");argc == 2 ? cvLoadImage(argv[1]) : 0;cvShowImage("Image", image);if (!image) return -1;center = cvPoint(image->width / 2, image->height / 2);for (int i = 0; i < image->height; i++)for (int j = 0; j < image->width; j++) {double dx = (double)(j - center.x) / center.x;double dy = (double)(i - center.y) / center.y;double weight = exp((dx*dx + dy*dy)*scale);uchar* ptr = &CV_IMAGE_ELEM(image, uchar, i, j * 3);ptr[0] = cvRound(ptr[0] * weight);ptr[1] = cvRound(ptr[1] * weight);ptr[2] = cvRound(ptr[2] * weight);}Mat src;src = cvarrToMat(image);cv::imwrite("test.png", src);cvNamedWindow("test", 1);imshow("test", src);cvWaitKey();return 0;
}
3、運行以下命令來編譯代碼:
g++ test1.cpp -o test1 `pkg-config --cflags --libs opencv`
4、在代碼的相同目錄下放一張待處理的圖片,命名為:lena.jpg
5、運行程序:
./test1
6、實驗結果:
- 結果圖前后對比:
- 對圖片進行亮度加權處理后,生成新的圖片test.png。
總結:
????????通過本次實驗,我對OpenCV庫在Linux系統中的應用有了更深入的理解。實驗中,我成功創建了圖像處理程序,實現了對圖片的亮度加權處理,并生成了新的圖片。這讓我對OpenCV的強大功能有了更直觀的認識。在編寫和編譯代碼的過程中,我遇到了一些問題,但通過查閱資料和反復嘗試,最終成功解決了問題。這次實驗不僅提升了我的編程能力,也增強了我對圖像處理技術的理解。未來,我希望能進一步探索OpenCV的更多功能,為實際項目開發提供技術支持。
參考博客:https://blog.csdn.net/weixin_56393108/article/details/120708930