png图片RGB转txt文本,然后再转回来jpg

不是我写的,但是是我debug和修改的,算是学习吧。

运用到了opencv,具体修改方法看别的推文,本想做个图片识别,做了个半成品发现有现成的,那就都试试吧。

#include 
#include 
#include 
#include 
using namespace std;
using namespace cv;
int main()
{// 读取图片文件string filename = "test.png";Mat img = imread(filename);// 获取图片尺寸int width = img.cols;int height = img.rows;cout<(i, j);data[i][j][0] = intensity.val[0]; // bluedata[i][j][1] = intensity.val[1]; // greendata[i][j][2] = intensity.val[2]; // red}}// 将数据写入TXT文件ofstream outfile("output.txt");for (int i = 0; i < height; i++) {for (int j = 0; j < width; j++) {outfile << int(data[i][j][0]) << "," << int(data[i][j][1]) << "," << int(data[i][j][2])<<",";}outfile << endl;}outfile.close();// 释放动态内存for (int i = 0; i < height; i++) {for (int j = 0; j < width; j++) {delete[] data[i][j];}delete[] data[i];}delete[] data;return 0;
}

输入为同文件夹.PNG格式,输出为同一行用“,”隔开的bgr值,应该是OpenCV的规则吧,不知道。

#include 
#include 
#include 
#include 
#include 
#include using namespace std;
using namespace cv;int main() {// 读取txt文件ifstream infile("output.txt");string line;vector> data;while (getline(infile, line)) {cout << 1;stringstream ss(line);string item;vector row_data;while (getline(ss, item, ',')) {int r = stoi(item);getline(ss, item, ',');int g = stoi(item);getline(ss, item, ',');int b = stoi(item);row_data.push_back(Vec3b(r,g,b)); // 注意OpenCV的颜色通道顺序是BGR}data.push_back(row_data);}// 生成图像int height = data.size();int width = data[0].size();Mat img(height, width, CV_8UC3);for (int i = 0; i < height; i++) {for (int j = 0; j < width; j++) {img.at(i, j) = data[i][j];}}// 保存为jpg文件imwrite("output.jpg", img);cout << "Done." << endl;return 0;
}

就是同文件夹转jpg格式。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部