C++ cv::imwrite
时间: 2023-06-28 19:12:46 浏览: 65
C++中的cv::imwrite函数是OpenCV库中的一个函数,用于将图像保存到文件中。它的函数原型为:
```
bool imwrite(const String& filename, InputArray img, const std::vector<int>& params = std::vector<int>());
```
其中,filename是保存的文件名,img是要保存的图像,params是可选参数,用于指定保存图像的格式、压缩等。
例如,将一张图像保存为PNG格式可以这样写:
```
cv::Mat img = cv::imread("test.png");
cv::imwrite("test_saved.png", img);
```
这会将读取的test.png图像保存为test_saved.png文件。
相关问题
C++ cv::imwrite返回值
C++函数`cv::imwrite`的返回值是一个布尔值,用于表示图像是否成功保存。保存成功,则返回`true`,否则返回`false`。如果返回`false`可以使用`cv::imwrite`函数提供的错误信息来确定错误的原因。例如,可以使用以下代码来检查`cv::imwrite`函数是否成功保存了图像:
```c++
if (!cv::imwrite("output.jpg", image)) {
std::cerr << "Failed to save the image!" << std::endl;
}
```
这将在控制台上输出错误消息,如果保存失败,则输出“Failed to save the image!”。
C++ cv::imwrite保存路径可以在子文件夹中吗?
是的,可以在子文件夹中保存图片。你只需要在保存路径中指定相对路径即可,例如:
```cpp
cv::Mat image = cv::imread("test.jpg");
cv::imwrite("path/to/subfolder/image.jpg", image);
```
这将在当前工作目录下的 `path/to/subfolder` 文件夹中保存名为 `image.jpg` 的图片。当然,如果该文件夹不存在,你需要先创建该文件夹。例如:
```cpp
cv::Mat image = cv::imread("test.jpg");
std::string folderPath = "path/to/subfolder";
if (!std::filesystem::exists(folderPath)) {
std::filesystem::create_directories(folderPath);
}
cv::imwrite(folderPath + "/image.jpg", image);
```
这将首先检查 `path/to/subfolder` 文件夹是否存在,如果不存在则创建该文件夹,然后再保存名为 `image.jpg` 的图片。请确保你的编译器支持 C++17 标准,否则你可能需要使用其他方式来检查和创建文件夹。