SHARE
TWEET

tm

pabloducato May 12th, 2019 87 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top