资源简介

平台vs c++与opencv 实现图像压缩 训练矢量 LBG算法设计码书 根据码书显示压缩后图像

资源截图

代码片段和文件信息

#include “stdafx.h“
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
#include 
#include
#include
using namespace cv;
using namespace std;
double num[512][512] = { 0 };
double data5[512][512] = { 0 };
double data3[4096][64] = { 0 };
double data1[512 * 512] = { 0 };
double data2[4096][64] = { 0 };
double MIU[4096][512] = { 0 };
double code_book1[512][64] = { 0 };

int main(int argc char* argv[])
{
const char* imagename = “Lena.jpg“;
IplImage * img = cvLoadImage(imagename);
if (!img)
{
fprintf(stderr “Can not load image %s\n“ imagename);
return -1;
}
if (!img->imageData) // 检查是否正确载入图像
return -1;
cvNamedWindow(“image“ CV_WINDOW_AUTOSIZE); //创建窗口
cvShowImage(“image“ img); //显示图
IplImage* img1 = cvCreateImage(cvGetSize(img) IPL_DEPTH_8U 1);//创建目标图像
cvCvtColor(img img1 CV_BGR2GRAY);//cvCvtColor(srcdesCV_BGR2GRAY)
cvNamedWindow(“gray_image“ CV_WINDOW_AUTOSIZE);//创建显示目标的窗口
cvShowImage(“gray_image“ img1);//显示灰度图像
cvSaveImage(“Gray.jpg“ img1 0);
cvWaitKey();
cvReleaseImage(&img);
cvReleaseImage(&img1);
//system(“pause“);
IplImage *img2 = cvLoadImage(“Gray.jpg“ 0);
CvScalar pixel;
int m = 512;
int n = 512;
for (int i = 0; i < img2->height; ++i)
{
for (int j = 0; j < img2->width; ++j)
{
//获得像素的RGB值并显示    
pixel = cvGet2D(img2 i j);
//printf(“B=%fG=%fR=%f\t“ pixel.val[0] pixel.val[1] pixel.val[2]);
num[i][j] = pixel.val[0];
}
}
for (int ii = 0; ii  for (int ij = 0; ij < n; ij++)
num[ii][ij] = num[ii][ij] / 255;

}
cout << “归一化数据为“ << endl;
for (int ii = 0; ii < 8; ii++) {
for (int ij = 0; ij < 8; ij++) {
cout << num[ii][ij] << “ “;
}
cout << endl;
}
//system(“pause“);
//设置码字大小为8 * 8即64个像素值
int code_word_size = 64;
//设置码书大小
int code_book_size = 512;

for (int ii = 0; ii < 512; ii++) {
for (int ij = 0; ij < 512; ij++) {
data1[ii*n + ij] = num[ii][ij];
}
}
int M1 = floor(m*n / code_word_size);
//这里m1等于4096
int r = (m*n) % code_word_size;
//这里r等于0
if (r > 0) {
M1 += 1;
}
cout << “66“ << endl;
int l = 1;
double A[64] = { 0 };
r = 1;
for (int ii = 0; ii < m*n;ii= ii + 1) {
A[r] = data1[ii];
if (r == code_word_size) {
for (int ij = 0; ij < 64; ij++) {
data2[l][ij] = A[ij];

}
l = l + 1;
r = 1;
}
else {
r = r + 1;
}
//cout << ii << endl;
}
cout << “82“ << endl;
double code_book[512][64] = { 0 };
cout << “84“ << endl;
//图像矢量压缩基于LbG算法实现
l = 1;
r = 1;
//double A[64] = { 0 };//初始化码书
for (int ii = 0; ii < 64; ii++)
A[ii] = 0;
for (int ii = 0; ii < code_book_size*code_word_size; ii++) {
A[r] = data1[ii];
if (r == code_word_size) {
for (int ij = 0; ij < 64; ij++)
code_book[l][ij] = A[ij];
l += 1;
r = 1;
}
else {
r += 1;
}
}
cout << “103“

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-11-25 19:37  compression\
     目录           0  2018-11-25 01:58  compression\.vs\
     目录           0  2018-11-25 01:58  compression\.vs\ConsoleApplication2\
     目录           0  2018-11-25 01:58  compression\.vs\ConsoleApplication2\v14\
     文件       44544  2018-11-24 13:03  compression\.vs\ConsoleApplication2\v14\.suo
     目录           0  2018-11-25 01:58  compression\ConsoleApplication2\
     文件        6041  2018-11-24 13:00  compression\ConsoleApplication2\ConsoleApplication2.cpp
     文件        8795  2018-11-24 10:19  compression\ConsoleApplication2\ConsoleApplication2.vcxproj
     文件        1326  2018-11-22 14:54  compression\ConsoleApplication2\ConsoleApplication2.vcxproj.filters
     文件         165  2018-11-22 15:06  compression\ConsoleApplication2\ConsoleApplication2.vcxproj.user
     目录           0  2018-11-25 01:58  compression\ConsoleApplication2\Debug\
     目录           0  2018-11-25 01:58  compression\ConsoleApplication2\Debug\ConsoleA.8E535029.tlog\
     文件        1994  2018-11-22 14:56  compression\ConsoleApplication2\Debug\ConsoleA.8E535029.tlog\CL.command.1.tlog
     文件        5216  2018-11-22 14:56  compression\ConsoleApplication2\Debug\ConsoleA.8E535029.tlog\CL.read.1.tlog
     文件        1638  2018-11-22 14:56  compression\ConsoleApplication2\Debug\ConsoleA.8E535029.tlog\CL.write.1.tlog
     文件         243  2018-11-22 14:56  compression\ConsoleApplication2\Debug\ConsoleA.8E535029.tlog\ConsoleApplication2.lastbuildstate
     文件           0  2018-11-22 14:56  compression\ConsoleApplication2\Debug\ConsoleA.8E535029.tlog\unsuccessfulbuild
     文件        1073  2018-11-22 14:56  compression\ConsoleApplication2\Debug\ConsoleApplication2.log
     文件     3407872  2018-11-22 14:56  compression\ConsoleApplication2\Debug\ConsoleApplication2.pch
     文件       12474  2018-11-22 14:56  compression\ConsoleApplication2\Debug\stdafx.obj
     文件       93184  2018-11-22 14:56  compression\ConsoleApplication2\Debug\vc140.idb
     文件      143360  2018-11-22 14:56  compression\ConsoleApplication2\Debug\vc140.pdb
     文件       90965  2018-11-24 13:00  compression\ConsoleApplication2\Gray.jpg
     文件      719641  2018-11-07 11:31  compression\ConsoleApplication2\Lena.jpg
     文件         122  2018-11-24 12:44  compression\ConsoleApplication2\ReadMe.txt
     文件         223  2018-11-22 14:54  compression\ConsoleApplication2\stdafx.cpp
     文件         234  2018-11-22 14:54  compression\ConsoleApplication2\stdafx.h
     文件         240  2018-11-22 14:54  compression\ConsoleApplication2\targetver.h
     目录           0  2018-11-25 01:58  compression\ConsoleApplication2\x64\
     目录           0  2018-11-25 01:58  compression\ConsoleApplication2\x64\Debug\
     目录           0  2018-11-25 01:58  compression\ConsoleApplication2\x64\Debug\ConsoleA.8E535029.tlog\
............此处省略34个文件信息

评论

共有 条评论