//2018.1.19_21:09 by Cooper Liu
//Questions? Contact me: [email protected]
//本程序为C++工程,编译环境需要配置openCV
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
//#include<opencv2/opencv.hpp>//如果要包含所有库
using namespace cv;
//将mat类型转换为二维数组的类型
int M = 4, N = 8;
int row = 4, col = 8;
//进行dct变换
double** mydct(double ptr2[M][], int M, int N)
{
int p, q, m, n;
double ap, aq;
double output[M][N];
for (p = 0; p < M - 1; p++)
{
for (q = 0; q < N - 1; q++)
{
if(p == 0)
{
ap = sqrt(1.0 / M);
}
else
{
ap = sqrt(2.0 / M);
}
if(q == 0)
{
aq = sqrt(1.0 / N);
}
else
{
aq = sqrt(2.0 / N);
}
double tmp = 0.0;
for (m = 0; m < M - 1; m++)
{
for (n = 0; n < N - 1; n++)
{
tmp += ptr2[m][n] * cos((2 * m + 1)*p*PI / (2.0 * M)) * cos((2 * n + 1)*q*PI / (2.0 * N));
}
}
output[p][q] = ap*aq*temp;
}
}
return output;
}
//将二维数组转化成mat类型以图片形式输出
void main()
{
//定义图片的行列数
int row = 4;
int col = 8;
double matrix[row][col]={
{ 89.0, 101.0, 114.0, 125.0, 126.0, 115.0, 105.0, 96.0},
{ 97.0, 115.0, 131.0, 147.0, 149.0, 135.0, 123.0, 113.0},
{ 114.0, 134.0, 159.0, 178.0, 175.0, 164.0, 149.0, 137.0},
{ 121.0, 143.0, 177.0, 196.0, 201.0, 189.0, 165.0, 150.0 },
};
//对转换成的二维数组作dct变换,最终结果以二维数组的形式存入result
double **result = mydct(matrix, row, col);//mydct似乎没有凑效
//最后对result二维数组转化成mat类型并以图片形式输出
int i, j;
for (i = 0; i < row; i++)
{
for (short j = 0; j < col; j++)
{
cout << result[i][j] << '/t';
}
cout << endl;
}
}
G
M
T
Detect languageAfrikaansAlbanianAmharicArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CorsicanCroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchFrisianGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHawaiianHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanKurdishKyrgyzLaoLatinLatvianLithuanianLuxembourgishMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPashtoPersianPolishPortuguesePunjabiRomanianRussianSamoanScots GaelicSerbianSesothoShonaSindhiSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshXhosaYiddishYorubaZulu |
|
AfrikaansAlbanianAmharicArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CorsicanCroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchFrisianGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHawaiianHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanKurdishKyrgyzLaoLatinLatvianLithuanianLuxembourgishMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPashtoPersianPolishPortuguesePunjabiRomanianRussianSamoanScots GaelicSerbianSesothoShonaSindhiSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshXhosaYiddishYorubaZulu |
|
|
|
|
|
Text-to-speech function is limited to 200 characters