• 大小: 7.17MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-11-02
  • 语言: 其他
  • 标签: opencv  jpeg  编解码  

资源简介

对图像进行压缩编码,并写入内存,然后从内存中读出并显示

资源截图

代码片段和文件信息

// JPEGDecodeEncode.cpp : 定义控制台应用程序的入口点。
//

#include “stdafx.h“
#include 
#include 
#include 
#include 
using namespace std;
using namespace cv;

double getPSNR(Mat& src1 Mat& src2 int bb=0);

int main(int argc char** argv)
{
Mat src = imread(“lena.png“);
cout<<“origin image size: “< cout<<“height: “< cout<<“height*width*depth: “< //(1) jpeg compression
vector buff;//buffer for coding
vector param = vector(2);
param[0]=CV_IMWRITE_JPEG_QUALITY;
param[1]=95;//default(95) 0-100

imencode(“.jpg“srcbuffparam);
cout<<“coded file size(jpg): “< Mat jpegimage = imdecode(Mat(buff)CV_LOAD_IMAGE_COLOR);

//(2) png compression
param[0]=CV_IMWRITE_PNG_COMPRESSION;
param[1]=3;//default(3)  0-9.
imencode(“.png“srcbuffparam);
cout<<“coded file size(png): “< Mat pngimage = imdecode(Mat(buff)CV_LOAD_IMAGE_COLOR);

//(3) intaractive jpeg compression
char name[64];
namedWindow(“jpg“);
int q=95;
createTrackbar(“quality““jpg“&q100);
int key = 0;
while(key!=‘q‘)
{
param[0]=CV_IMWRITE_JPEG_QUALITY;
param[1]=q;
imencode(“.jpg“srcbuffparam);
Mat show = imdecode(Mat(buff)CV_LOAD_IMAGE_COLOR);

double psnr = getPSNR(srcshow);//get PSNR
double bpp = 8.0*buff.size()/(show.size().area());//bit/pixe;
sprintf(name“quality:%03d %.1fdB %.2fbpp“qpsnrbpp);
putText(shownamePoint(1550) FONT_HERSHEY_SIMPLEX1CV_RGB(255255255)2);
imshow(“jpg“show);
key = waitKey(33);

if(key ==‘s‘)
{
//(4) data writing 
sprintf(name“q%03d_%.2fbpp.png“qbpp);
imwrite(nameshow);

sprintf(name“q%03d_%.2fbpp.jpg“qbpp);
param[0]=CV_IMWRITE_JPEG_QUALITY;
param[1]=q;
imwrite(namesrcparam);;
}
}
}
double getPSNR(Mat& src1 Mat& src2 int bb)
{
int ij;
double ssemsepsnr;
sse = 0.0;

Mat s1s2;
cvtColor(src1s1CV_BGR2GRAY);
cvtColor(src2s2CV_BGR2GRAY);

int count=0;
for(j=bb;j {
uchar* d=s1.ptr(j);
uchar* s=s2.ptr(j);

for(i=bb;i {
sse += ((d[i] - s[i])*(d[i] - s[i]));
count++;
}
}
if(sse == 0.0 || count==0)
{
return 0;
}
else
{
mse =sse /(double)(count);
psnr = 10.0*log10((255*255)/mse);
return psnr;
}
}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-07-09 00:12  JPEGDecodeEncode\
     目录           0  2014-07-08 22:55  JPEGDecodeEncode\Debug\
     文件       80896  2014-07-08 22:56  JPEGDecodeEncode\Debug\JPEGDecodeEncode.exe
     文件      624092  2014-07-08 22:56  JPEGDecodeEncode\Debug\JPEGDecodeEncode.ilk
     文件     1682432  2014-07-08 22:56  JPEGDecodeEncode\Debug\JPEGDecodeEncode.pdb
     目录           0  2014-07-08 22:07  JPEGDecodeEncode\ipch\
     目录           0  2014-07-08 22:07  JPEGDecodeEncode\ipch\jpegdecodeencode-7e3800ee\
     文件     2359296  2014-07-08 22:07  JPEGDecodeEncode\ipch\jpegdecodeencode-7e3800ee\jpegdecodeencode-c9ebd184.ipch
     目录           0  2014-07-08 22:49  JPEGDecodeEncode\JPEGDecodeEncode\
     文件    15683584  2014-07-09 00:12  JPEGDecodeEncode\JPEGDecodeEncode.sdf
     文件         915  2014-07-08 22:07  JPEGDecodeEncode\JPEGDecodeEncode.sln
     文件       11264  2014-07-09 00:12  JPEGDecodeEncode\JPEGDecodeEncode.suo
     目录           0  2014-07-08 22:56  JPEGDecodeEncode\JPEGDecodeEncode\Debug\
     文件        1610  2014-07-08 22:56  JPEGDecodeEncode\JPEGDecodeEncode\Debug\cl.command.1.tlog
     文件       21304  2014-07-08 22:56  JPEGDecodeEncode\JPEGDecodeEncode\Debug\CL.read.1.tlog
     文件         990  2014-07-08 22:56  JPEGDecodeEncode\JPEGDecodeEncode\Debug\CL.write.1.tlog
     文件         406  2014-07-08 22:49  JPEGDecodeEncode\JPEGDecodeEncode\Debug\JPEGDecodeEncode.exe.embed.manifest
     文件         472  2014-07-08 22:49  JPEGDecodeEncode\JPEGDecodeEncode\Debug\JPEGDecodeEncode.exe.embed.manifest.res
     文件         381  2014-07-08 22:56  JPEGDecodeEncode\JPEGDecodeEncode\Debug\JPEGDecodeEncode.exe.intermediate.manifest
     文件          60  2014-07-08 22:56  JPEGDecodeEncode\JPEGDecodeEncode\Debug\JPEGDecodeEncode.lastbuildstate
     文件        4343  2014-07-08 22:56  JPEGDecodeEncode\JPEGDecodeEncode\Debug\JPEGDecodeEncode.log
     文件      315596  2014-07-08 22:56  JPEGDecodeEncode\JPEGDecodeEncode\Debug\JPEGDecodeEncode.obj
     文件     1179648  2014-07-08 22:49  JPEGDecodeEncode\JPEGDecodeEncode\Debug\JPEGDecodeEncode.pch
     文件         707  2014-07-08 22:49  JPEGDecodeEncode\JPEGDecodeEncode\Debug\JPEGDecodeEncode.vcxprojResolveAssemblyReference.cache
     文件           0  2014-07-08 22:49  JPEGDecodeEncode\JPEGDecodeEncode\Debug\JPEGDecodeEncode.write.1.tlog
     文件         222  2014-07-08 22:49  JPEGDecodeEncode\JPEGDecodeEncode\Debug\JPEGDecodeEncode_manifest.rc
     文件           2  2014-07-08 22:56  JPEGDecodeEncode\JPEGDecodeEncode\Debug\link-cvtres.read.1.tlog
     文件           2  2014-07-08 22:56  JPEGDecodeEncode\JPEGDecodeEncode\Debug\link-cvtres.write.1.tlog
     文件           2  2014-07-08 22:56  JPEGDecodeEncode\JPEGDecodeEncode\Debug\link.18900-cvtres.read.1.tlog
     文件           2  2014-07-08 22:56  JPEGDecodeEncode\JPEGDecodeEncode\Debug\link.18900-cvtres.write.1.tlog
     文件           2  2014-07-08 22:56  JPEGDecodeEncode\JPEGDecodeEncode\Debug\link.18900.read.1.tlog
............此处省略26个文件信息

评论

共有 条评论