转载,转自:http://www.cnblogs.com/ketmales/archive/2013/03/03/2942155.html。
1. jpg2ppm
function status = jpg2ppm(infilename, outfilename)
I = imread(infilename, 'jpg');
imwrite(I, outfilename, 'ppm');
status = 0;
close;
end
2. 命令
jpg2ppm('D:\greens.jpg', 'D:\greens.ppm')
另外,一下是我自己写的代码。可惜不对。请高手解答一些哪里不对,不胜感激!
代码:
//本程序的目的是转化图片到ppm格式
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
#include <fstream>
using namespace cv;
using namespace std;
int main(int argc, char **argv)
{
//Mat src = imread(argv[1]);
Mat src = imread("harvest.jpg");
if (!src.empty())
{
//ofstream ppm(argv[2], ios::app|ios::binary);
ofstream ppm("harvest.ppm", ios::app|ios::binary);
ppm<<"P6 "<<src.cols<<" "<<src.rows<<" 255\n";
uchar b, g, r;
for (int j = 0; j< src.cols; j++)
{
for (int i = 0; i< src.rows; i++)
{
b = src.at<Vec3b>(i, j)[0];
g = src.at<Vec3b>(i, j)[1];
r = src.at<Vec3b>(i, j)[2];
ppm<<r<<g<<b;
}
}
ppm.close();
}
return 0;
}
我写的不能被acdsee识别,但matlab写的就可以。很疑惑……