c语言编写用opencv将路径/root/photo/compressphoto中的.jpg图片解压缩到路径/root/photo/decompressphoto中,给出相应程序和对应的Makefile文件,注意opencv文件处于/root/opencv-4.5.1文件夹中。用最简洁的代码表示并说明效果
时间: 2023-05-27 14:07:08 浏览: 100
以下是实现该功能的C语言程序:
```c
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
// 设置路径
const char* compressPath = "/root/photo/compressphoto/";
const char* decompressPath = "/root/photo/decompressphoto/";
// 获取压缩路径下所有jpg文件列表
std::vector<String> filenames;
glob(compressPath, filenames);
// 遍历列表,逐个解压缩
for (size_t i = 0; i < filenames.size(); i++) {
// 读取压缩文件
Mat compressedImg = imread(filenames[i], IMREAD_UNCHANGED);
// 将压缩文件解压缩
Mat decompressedImg;
imdecode(compressedImg, IMREAD_UNCHANGED, &decompressedImg);
// 设置解压缩文件的路径和名称
std::string decompressName = decompressPath + std::to_string(i) + ".jpg";
// 保存解压缩文件
imwrite(decompressName, decompressedImg);
}
return 0;
}
```
上述程序通过OpenCV的imread和imwrite函数读取和保存图片,通过imdecode函数将压缩文件解压缩,通过glob函数获取压缩路径下所有jpg文件列表,并逐个解压缩并保存到解压缩路径下。
以下是对应的Makefile文件:
```makefile
CC = g++
CFLAGS = -Wall -g
OPENCV_INCLUDE = -I/root/opencv-4.5.1/include
OPENCV_LIB = -L/root/opencv-4.5.1/lib -lopencv_core -lopencv_imgcodecs
SRC = main.cpp
all:
$(CC) $(CFLAGS) $(OPENCV_INCLUDE) $(OPENCV_LIB) $(SRC) -o main
clean:
rm -rf main
```
使用make命令即可编译生成可执行文件main。执行该文件后,即可将压缩路径下的所有jpg文件解压缩到解压缩路径下。
阅读全文