c语言编写用opencv将路径/root/photo/compressphoto中的.jpg图片解压缩到路径/root/photo/decompressphoto中,给出相应程序和对应的Makefile文件,注意opencv文件处于/root/opencv-4.5.1文件夹中。要求代码简洁易懂并说明效果
时间: 2023-05-27 17:07:09 浏览: 78
C# 进行图片压缩的示例代码(对jpg压缩效果最好)
以下是代码和Makefile文件:
代码:
```c
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
string src_path = "/root/photo/compressphoto/";
string dst_path = "/root/photo/decompressphoto/";
vector<string> files;
glob(src_path + "*.jpg", files, false);
for (size_t i = 0; i < files.size(); i++) {
Mat img = imread(files[i], IMREAD_UNCHANGED);
if (img.empty()) {
cout << "Cannot open image: " << files[i] << endl;
continue;
}
string filename = files[i].substr(files[i].find_last_of("/\\") + 1);
imwrite(dst_path + filename, img);
}
return 0;
}
```
Makefile文件:
```makefile
CC = g++
CFLAGS = -Wall -O2
LDFLAGS = -lopencv_core -lopencv_highgui -lopencv_imgcodecs
all: decompressphoto
decompressphoto: decompressphoto.o
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
decompressphoto.o: decompressphoto.cpp
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f *.o decompressphoto
```
运行程序后,将会把路径/root/photo/compressphoto中的所有.jpg图片解压缩到路径/root/photo/decompressphoto中。程序使用了OpenCV的imread和imwrite函数来读取和写入图片,使用了glob函数来获取路径中所有的.jpg文件。Makefile文件使用了变量和规则来简化编译过程,使用了clean规则来清除生成的目标文件和可执行文件。
阅读全文