Advertisement
pabloducato

tm

May 12th, 2019
358
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.09 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.     for (int i=0; i<blockRows; i++) {
  37.         for (int j=0; j<blockCols; j++) {
  38.             for (int k=0; k<8; k++) {
  39.                 for (int l=0; l<8; l++) {
  40.                     block[i][j][k][l] = fruitsPixels[i*8+k][j*8+l];
  41.                     // podział obrazu na bloki
  42.                     // DLA MNIE: wydobycie wartości dla odpowiedniego bloku, początek danych dla bloku + przesunięcie
  43.                     blockDCT[i][j][k][l] = 0;
  44.                     blockIDCT[i][j][k][l] = 0;
  45.                     // zerowanie blockDCT i blockIDCT
  46.                 }
  47.             }
  48.         }
  49.     }
  50.  
  51.     /*for (int k=0; k<8; k++) {
  52.         for (int l=0; l<8; l++) {
  53.             block[0][0][k][l] = 0;
  54.             //wyzerowanie jednego bloku
  55.         }
  56.     }
  57.     for (int i=0; i<blockRows; i++) {
  58.         for (int j=0; j<blockCols; j++) {
  59.             for (int k=0; k<8; k++) {
  60.                 for (int l=0; l<8; l++) {
  61.                     fruitsPixels[i*8+k][j*8+l] = block [i][j][k][l];
  62.                     // składanie bloków
  63.                 }
  64.             }
  65.         }
  66.     }*/
  67.  
  68.        
  69.  
  70.     // Wyświetlenie obrazu
  71.     //imshow("JPEG", imageFruits);
  72.     imshow("JPEG", fruitsPixels);
  73.  
  74.     // Oczekiwanie na wciśnięcie klawisza Esc lub Enter
  75.     char key;
  76.     do  key = cvWaitKey(1);
  77.     while(key != 27 && key != 13);
  78.  
  79.     // Niszczenie okna
  80.     cvDestroyWindow("JPEG");
  81.     return 0;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement