daily pastebin goal
30%
SHARE
TWEET

Untitled

a guest Mar 25th, 2019 48 in 1 day
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "stdafx.h"
  2.  
  3. #define _USE_MATH_DEFINES
  4.  
  5. #include <opencv2/imgproc/imgproc.hpp>  // Gaussian Blur
  6. #include <opencv2/core/core.hpp>        // Basic OpenCV structures (cv::Mat, Scalar)
  7. #include <opencv2/highgui/highgui.hpp>
  8. #include <stdio.h>
  9. #include <math.h>
  10. #include <iostream>
  11.  
  12. int angle = 0;
  13. char dir = 1;
  14. int speed = 1;
  15. using namespace std;
  16. using namespace cv;
  17.  
  18. bool Rotate(Mat_<uchar> &peppersPixels, Mat_<uchar> &rotatedPeppersPixels);
  19.  
  20. int _tmain(int argc, _TCHAR* argv[])
  21. {
  22.     // Stworzenie okna w którym przechwycone obrazy będą wyświetlane
  23.     cvNamedWindow("Obracanie obrazu", CV_WINDOW_AUTOSIZE);
  24.    
  25.     // Pobranie obrazu
  26.     Mat imagePeppers = imread("peppers.jpg",CV_LOAD_IMAGE_GRAYSCALE);
  27.  
  28.     // Utworzenie obiektu przechowującego obraz, który będzie obracany
  29.     Mat rotatedPeppers = imagePeppers.clone();
  30.  
  31.     // Uzyskanie macierzy pikseli na podstawie obiektów Mat
  32.     Mat_<uchar> peppersPixels = imagePeppers;
  33.     Mat_<uchar> rotatedPeppersPixels = rotatedPeppers;
  34.  
  35.     while(1)
  36.     {
  37.         // Obracanie obrazu
  38.         if(Rotate(peppersPixels, rotatedPeppersPixels) == true)
  39.             break;
  40.  
  41.         // Wyświetlanie obrazu
  42.         imshow("Obracanie obrazu", rotatedPeppersPixels);
  43.     }
  44.  
  45.     // Niszczenie okna
  46.     cvDestroyWindow("Obracanie obrazu");
  47.     return 0;
  48. }
  49.  
  50. bool Rotate(Mat_<uchar> &peppersPixels, Mat_<uchar> &rotatedPeppersPixels)
  51. {
  52.     /* Funkcja obracająca obraz peppersPixels o liczbę stopni zwiększaną o 1 przy każdym kolejnym wywołaniu.
  53.     Kiedy liczba stopni dochodzi do 360, następuje powtórzenie cyklu - ustawienie liczbę stopni na 0.
  54.     Wynikowy obraz (obrócony) zostaje zapisywany w rotatedPeppersPixels. */
  55.    
  56.     // TODO
  57.  
  58.     rotatedPeppersPixels.setTo(0);
  59.    
  60.  
  61.     for(int i = 0; i < peppersPixels.rows; i++)
  62.     {
  63.         for(int j = 0; j < peppersPixels.cols; j++)
  64.         {
  65.             //Mat_<uchar> p =
  66.             float x = (i - peppersPixels.rows / 2) * cos(dir * angle * M_PI/180) + (j - peppersPixels.cols / 2) * (-sin(dir * angle * M_PI/180));
  67.             float y = (i - peppersPixels.rows / 2) * sin(dir * angle * M_PI/180) + (j - peppersPixels.cols / 2) * cos(dir * angle * M_PI/180);
  68.             int xx = (int)x + peppersPixels.rows / 2;
  69.             int yy = (int)y + peppersPixels.cols / 2;
  70.             if(xx >= 0 && xx < peppersPixels.rows && yy >= 0 && yy < peppersPixels.cols)
  71.             {
  72.                 rotatedPeppersPixels[xx][yy] = peppersPixels[i][j];
  73.             }
  74.            
  75.         }
  76.     }Mat_<uchar> mat = rotatedPeppersPixels;
  77.             medianBlur(mat, rotatedPeppersPixels, 3);
  78.  
  79.     angle += speed;
  80.     if(angle > 360) angle = 0;
  81.  
  82.     // Oczekiwanie na wciśnięcie klawisza Esc lub Enter
  83.     char key = cvWaitKey(1);
  84.     if(key == 27 || key == 13/*Esc lub Enter*/)
  85.         return true;
  86.     if(key == 100)
  87.     {
  88.         dir = -dir;
  89.     }
  90.     if(key == 43 && speed <=10)
  91.     {
  92.         speed++;
  93.     }
  94.     if(key == 45 && speed > 0)
  95.     {
  96.         speed--;
  97.     }
  98.  
  99.     return false;
  100. }
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