一、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