Guest User

Untitled

a guest
Oct 23rd, 2019
102
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <QApplication>
  2. #include "ImageGrid.h"
  3. #include "operatii.h"
  4.  
  5. /* Shortcuts:
  6.  
  7. Scroll wheel - zoom in/out
  8.  
  9. Left button drag - deplasare in imagine cand aceasta este mai mare decat fereastra
  10.  
  11. Ctrl+A - activeaza / dezactiveaza ajustarea automata a dimensiunii imaginii
  12. pe care se afla cursorul mouse-ului
  13.  
  14. Shift+A - activeaza / dezactiveaza ajustarea automata a dimensiunii
  15. tuturor imaginilor
  16.  
  17. Ctrl+R - reseteaza imaginea curenta la dimensiunile sale initiale
  18.  
  19. Shift+R - reseteaza toate imaginile la dimensiunile lor initiale
  20.  
  21. */
  22.  
  23. int main(int argc, char *argv[])
  24. {
  25. QApplication a(argc, argv);
  26.  
  27. /* generam o fereastra care va contine una sau mai multe imagini
  28. plasate sub forma unei matrici 2D */
  29. ImageGrid *grid = new ImageGrid("Prelucrarea imaginilor");
  30.  
  31. QString imageDir = "Images/";
  32. QString imageFile(imageDir + "lena512.bmp");
  33.  
  34. /*adaugam prima imagine, cea initiala, citita din fisier,
  35. in pozitia stanga-sus (linia 0, coloana 0)*/
  36. grid->addImage(imageFile, 0, 0);
  37.  
  38. /* extragem imformatiile necesare din imagine:
  39. dimensiunile ei si un sir de octeti care contine valorile
  40. intensitatilor pentru fiecare pixel */
  41. int w, h;
  42. unsigned char* img = Tools::readImageGray8(imageFile, w, h);
  43.  
  44. // exemplu de operatie: negativarea unei imagini
  45.  
  46. /*parcurgem imaginea pixel cu pixel si determinam valoarea complementara
  47. pentru fiecare intensitate
  48.  
  49. se recomanda ca acest gen de operatie sa se implementeze intr-o functie
  50. separata sau intr-o alta clasa
  51. */
  52. double filter1[3][3] = { { 0.0,0.2,0.0 },{ 0.2,0.2,0.2 },{ 0.0,0.2,0.0 } };
  53. double filter2[5][5] = { { 0,0,1,0,0 },{ 0,1,1,1,0 },{ 1,1,1,1,1 },{ 0,1,1,1,0 },{ 0,0,1,0,0 } };
  54.  
  55.  
  56. //unsigned char* negated = negateImage(img, w, h);
  57. unsigned char *conv1 = convolutie1(img, w, h, filter1);
  58. unsigned char *conv2 = convolutie2(img, w, h, filter2, 5, 5);
  59.  
  60.  
  61. /* afisam imaginea astfel obtinuta la dreapta celei initiale;
  62. parametrii cu valorile 0, 1 semnifica prima linie, respectiv
  63. a doua coloana a imageGrid-ului
  64. */
  65. //grid->addImage(negated, w, h, 0, 1, "negativ");
  66. grid->addImage(conv1, w, h, 0, 1, "convolutie1");
  67. grid->addImage(conv2, w, h, 0, 2, "convolutie2");
  68.  
  69. grid->show();
  70.  
  71. return a.exec();
  72. }
RAW Paste Data