资源简介
平台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个文件信息
相关资源
- C++语言和面向对象程序设计第二版
- Visual C++ 用户界面制作与应用 pdf VC
- C++ Primer Plus第五版中文版文字版
- 64位libstdc++.so.6.0.22,解决glibcxx not f
- vibe运动目标提取opencv C++源代码
- blender 源代码 c c++ git 2016-4-3同步获取
- VC++串口modbus测试工程
- Visual C++从入门到精通(第3版) 高清
- C++软件渲染管线
- 基于VS2010MFC平台使用C++编写的上位机
- C++内存管理课件——侯捷老师
- Programming principles and practice Using C++ (
- 黑马程序员最新24期C/C++全栈培训讲义
- QR码二维码编码C++源代码VS2010编译环境
- QR二维码解码,C++源代码VS2010编译环境
- 11_人脸检测与识别系统.zip
- Visual C++视频会议开发技术与源码.ra
- VC数字图像处理杨淑莹北京交通大学
- C++标准库MSDN离线文档-微软2017-10月发
- 数据结构(C++语言版)第三版超清带
- Visual C++范例大全 400+的
- 《Visual C++网络编程开发与实战》案例
- Visual C++网络编程开发与实战 案例源码
- C++ 孔令德计算机图形学习题答案源代
- VC++实现浏览器
- Visual C++ MFC棋牌类游戏编程五子棋,象
- C++TEST中文帮助文档
- C-Free 5.0
- 轻松搞定C++语言.pdf
- c++人脸相似度检测MFC源码
评论
共有 条评论