Advertisement
bartek27210

teraz

May 13th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.97 KB | None | 0 0
  1. #include "stdafx.h"
  2.  
  3. #include <opencv2/imgproc/imgproc.hpp>  // Gaussian Blur
  4. #include <opencv2/core/core.hpp>        // Basic OpenCV structures (cv::Mat, Scalar)
  5. #include <opencv2/highgui/highgui.hpp>
  6. #include <stdio.h>
  7. #include <math.h>
  8. #include <iostream>
  9.  
  10. #define PI (3.141592653589793)
  11.  
  12. using namespace std;
  13. using namespace cv;
  14.  
  15. int _tmain(int argc, _TCHAR* argv[])
  16. {
  17.     // Stworzenie okna w którym przechwycone obrazy będą wyświetlane
  18.     cvNamedWindow("JPEG", CV_WINDOW_AUTOSIZE);
  19.    
  20.     // Pobranie obrazu
  21.     Mat imageFruits = imread("fruits2.jpg",CV_LOAD_IMAGE_GRAYSCALE);
  22.  
  23.     // Uzyskanie macierzy pikseli na podstawie obiektów Mat
  24.     Mat_<uchar> fruitsPixels = imageFruits;
  25.  
  26.     const int blockCols = 320/8;
  27.     const int blockRows = 240/8;
  28.  
  29.     // Utworzenie bloków przechowujących odpowiednio: oryginalny obraz, obraz po DCT, obraz po IDCT
  30.     float block[blockRows][blockCols][8][8];
  31.     float blockDCT[blockRows][blockCols][8][8];
  32.     float blockIDCT[blockRows][blockCols][8][8];
  33.  
  34.  
  35.     // TODO
  36.         // podział obrazu na bloki
  37.        
  38.     for(int i=0; i< fruitsPixels.rows; i++){
  39.         for(int j=0; j< fruitsPixels.cols; j++){
  40.             block[i/8][j/8][i%8][j%8]=fruitsPixels[i][j];
  41.         }
  42.     }
  43.         // zerowanie blockDCT i blockIDCT
  44.     for(int i=0; i< fruitsPixels.rows; i++){
  45.         for(int j=0; j< fruitsPixels.cols; j++){
  46.             blockDCT[i/8][j/8][i%8][j%8]=0;
  47.             blockIDCT[i/8][j/8][i%8][j%8]=0;
  48.         }
  49.     }
  50.        
  51.  
  52.     for(int i=0; i< 8 ;i++){
  53.         for(int j=0; j< 8; j++){
  54.             block[0][0][i][j]=0;
  55.         }
  56.     }
  57.        
  58.     // TODO
  59.         // DCT
  60.         // kwantyzacja
  61.         // dekwantyzacja
  62.         // IDCT
  63.  
  64.     // TODO
  65.         // "składanie" obrazu z bloków
  66.  
  67.     for(int i=0; i< fruitsPixels.rows; i++){
  68.         for(int j=0; j< fruitsPixels.cols; j++){
  69.             fruitsPixels[i][j]=block[i/8][j/8][i%8][j%8];
  70.         }
  71.     }
  72.  
  73.     // Wyświetlenie obrazu
  74.     imshow("JPEG", imageFruits);
  75.  
  76.     // Oczekiwanie na wciśnięcie klawisza Esc lub Enter
  77.     char key;
  78.     do  key = cvWaitKey(1);
  79.     while(key != 27 && key != 13);
  80.  
  81.     // Niszczenie okna
  82.     cvDestroyWindow("JPEG");
  83.     return 0;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement