嵌入式学习——opencv图像库编程
环境配置
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和图像处理库,广泛用于各种计算机视觉任务,如图像处理、视频分析、人脸识别、物体检测、机器学习等。它提供了丰富的函数和工具,用于处理图像和视频数据,支持多种编程语言(如 C++、Python、Java 等)。
首先我们去官网下载Sources版本;
下载好过后,将压缩包拖入虚拟机中,并用命令解压,配置环境;
unzip opencv-4.11.0.zip //解压文件
解压完成过后,在自己的目录下就会多一个opencv-4.11.0的文件夹,根据自己下载的版本,后缀可能有所不同。
然后进入opencv文件夹,安装相关依赖库cmake,同时创建自己的编译文件夹并配置、编译,以便后续编译等操作。
注意:这里消耗时间比较长,需要耐心等待,在干其他事情时,确保自己的虚拟机开启,以免电脑进入休眠断开连接。
cd opencv-3.4.10 //进入opencv文件夹
sudo apt install cmake //安装依赖
mkdir my_build_dir //创建文件夹
cd my_build_dir //进入文件夹
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
//配置编译文件夹
sudo make -j4 //编译
sudo make install
随后配置OpenCV编译环境:
sudo gedit /etc/ld.so.conf.d/opencv.conf //添加到路径
source /etc/bash.bashrc //使配置生效并更新
sudo updatedb
图片编辑
在虚拟机中保存一张自己需要编辑的图片(IImage),然后创建函数对图片进行修改,具体代码根据自己的要求编辑,这里展示亮度调整处理。
加载图像:
IplImage* image = cvLoadImage("lena.jpg");argc == 2 ? cvLoadImage(argv[1]) : 0;
计算中心点:
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);}
最终效果
第一张为处理后的图片,第二张为处理前: