用halcon写一个批量裁切图片的代码
时间: 2024-02-09 16:11:28 浏览: 212
批量裁剪影像代码
以下是一个基于Halcon的批量裁切图片的代码示例,可以供您参考:
```cpp
#include "HalconCpp.h"
#include "HDevThread.h"
#include <iostream>
#include <vector>
#include <string>
using namespace HalconCpp;
using namespace std;
void batch_crop_images(vector<string>& filenames, int crop_x, int crop_y, int crop_width, int crop_height, string output_folder) {
// 设置输出路径
set_system("output_dir", output_folder.c_str());
// 循环处理每张图片
for (auto& filename : filenames) {
// 读取图片
HObject image;
read_image(&image, filename.c_str());
// 裁切图片
HObject cropped_image;
crop_rectangle1(image, &cropped_image, crop_y, crop_x, crop_height, crop_width);
// 保存图片
string output_file = output_folder + "/" + filename.substr(filename.find_last_of("/\\") + 1);
write_image(cropped_image, "tiff", 0, output_file.c_str());
}
}
int main(int argc, char* argv[]) {
// 定义裁切参数
int crop_x = 100;
int crop_y = 100;
int crop_width = 500;
int crop_height = 500;
// 定义输入输出路径
string input_folder = "input_folder";
string output_folder = "output_folder";
// 获取所有待处理图片的文件名
vector<string> filenames;
find_files(input_folder.c_str(), "", &filenames);
// 执行批量裁切图片并输出到指定目录
batch_crop_images(filenames, crop_x, crop_y, crop_width, crop_height, output_folder);
return 0;
}
```
该代码中,`batch_crop_images` 函数为批量裁切图片的函数,具体实现如下:
1. 设置输出路径。
2. 循环处理每张图片。
3. 读取图片。
4. 裁切图片。
5. 保存图片。
其中,`read_image` 函数用于读取图片,`crop_rectangle1` 函数用于裁切图片,`write_image` 函数用于保存图片。
在 `main` 函数中,我们定义了裁切参数、输入输出路径,并获取了待处理的所有图片文件名。随后,我们调用 `batch_crop_images` 函数进行批量裁切并输出到指定目录。
阅读全文