opencv中,如何保存mat图片到本地
时间: 2023-11-20 15:25:58 浏览: 421
可以使用OpenCV中的imwrite函数来保存mat图片到本地。
具体的代码如下:
```c++
cv::Mat image = cv::imread("example.jpg");
cv::imwrite("output.jpg", image);
```
其中,第一个参数是要保存的文件名,第二个参数是要保存的图像的Mat对象。
需要注意的是,保存的文件名需要包括文件格式后缀,比如.jpg、.png等等。
相关问题
C++ 使用opencv打开本地图片后,截取指定位置后,保存图片
可以使用OpenCV库中的cv::imwrite()函数将截取后的图片保存到本地。以下是一个示例代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 打开本地图片
Mat img = imread("test.jpg");
if (img.empty())
{
cout << "无法打开图片文件!" << endl;
return -1;
}
// 截取指定位置
Rect roi(100, 100, 200, 200); // 从(100, 100)开始截取200x200的区域
Mat img_roi = img(roi);
// 保存截取后的图片
bool success = imwrite("result.jpg", img_roi);
if (!success)
{
cout << "保存图片文件失败!" << endl;
return -1;
}
cout << "图片文件保存成功!" << endl;
return 0;
}
```
上述代码中,首先使用imread()函数打开本地图片,然后使用Rect类定义截取的区域,接着使用Mat类的运算符()截取指定区域,最后使用imwrite()函数将截取后的图片保存到本地。
c语言使用opencv读取文件夹中所有图片的rgb信息并将rgb信心保存本地
好的,这个问题可以通过以下C++代码实现:
```c++
#include <opencv2/opencv.hpp> //引入OpenCV头文件
#include <iostream>
#include <vector>
#include <string>
using namespace std;
using namespace cv;
int main()
{
string path = "your/directory/path/"; //图片所在的文件夹路径
vector<String> files; //存储文件名的vector
//用OpenCV中的glob函数获取文件夹中所有后缀名为jpg/png/jpeg的文件名,并存入vector
glob(path, files, false);
for (int i = 0; i < files.size(); ++i)
{
//利用OpenCV中的imread函数读取图片并保存到Mat类型的矩阵中
Mat img = imread(files[i]);
//获取图片的行列数
int rows = img.rows;
int cols = img.cols;
//遍历矩阵的每个像素
for (int y = 0; y < rows; ++y)
{
for (int x = 0; x < cols; ++x)
{
//获取当前像素的RGB值
Vec3b bgr = img.at<Vec3b>(y, x);
uchar blue = bgr[0];
uchar green = bgr[1];
uchar red = bgr[2];
//将RGB值保存到本地文件中
ofstream fout("rgb.txt", ios::app);
fout << static_cast<int>(red) << " " << static_cast<int>(green) << " " << static_cast<int>(blue) << endl;
fout.close();
}
}
}
return 0;
}
```
这段代码可以将文件夹中所有的后缀名为jpg/png/jpeg的图片的RGB值保存到本地rgb.txt文件中。注意需要将路径修改为你自己电脑上图片所在文件夹的路径。