CFindTemplate.h 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #pragma once
  2. #ifndef __CFINDTEMPLATE
  3. #define __CFINGTEMPLATE
  4. #include <stdint.h>
  5. #include <string>
  6. #define _USE_MATH_DEFINES
  7. #include <math.h>
  8. #include "stb_image.h"
  9. #include "stb_image_write.h"
  10. #include "stb_image_resize.h"
  11. class CImageBasis
  12. {
  13. protected:
  14. uint8_t* rgb_image;
  15. int channels;
  16. int width, height, bpp;
  17. bool externalImage;
  18. std::string filename;
  19. void memCopy(uint8_t* _source, uint8_t* _target, int _size);
  20. bool isInImage(int x, int y);
  21. public:
  22. int getWidth(){return this->width;};
  23. int getHeight(){return this->height;};
  24. int getChannels(){return this->channels;};
  25. void drawRect(int x, int y, int dx, int dy, int r = 255, int g = 255, int b = 255, int thickness = 1);
  26. void drawLine(int x1, int y1, int x2, int y2, int r, int g, int b, int thickness = 1);
  27. void drawCircle(int x1, int y1, int rad, int r, int g, int b, int thickness = 1);
  28. void setPixelColor(int x, int y, int r, int g, int b);
  29. void Contrast(float _contrast);
  30. bool ImageOkay();
  31. CImageBasis();
  32. CImageBasis(std::string _image);
  33. CImageBasis(uint8_t* _rgb_image, int _channels, int _width, int _height, int _bpp);
  34. uint8_t GetPixelColor(int x, int y, int ch);
  35. ~CImageBasis();
  36. void SaveToFile(std::string _imageout);
  37. };
  38. class CFindTemplate : public CImageBasis
  39. {
  40. public:
  41. int tpl_width, tpl_height, tpl_bpp;
  42. CFindTemplate(std::string _image);
  43. void FindTemplate(std::string _template, int* found_x, int* found_y, std::string _imageout);
  44. void FindTemplate(std::string _template, int* found_x, int* found_y, int _dx, int _dy, std::string _imageout);
  45. void FindTemplate(std::string _template, int* found_x, int* found_y);
  46. void FindTemplate(std::string _template, int* found_x, int* found_y, int _dx, int _dy);
  47. };
  48. class CRotate: public CImageBasis
  49. {
  50. public:
  51. CRotate(std::string _image) : CImageBasis(_image) {};
  52. CRotate(uint8_t* _rgb_image, int _channels, int _width, int _height, int _bpp) : CImageBasis(_rgb_image, _channels, _width, _height, _bpp) {};
  53. void Rotate(float _angle);
  54. void Rotate(float _angle, int _centerx, int _centery);
  55. void Translate(int _dx, int _dy);
  56. void Mirror();
  57. };
  58. class CAlignAndCutImage : public CImageBasis
  59. {
  60. public:
  61. int t0_dx, t0_dy, t1_dx, t1_dy;
  62. CAlignAndCutImage(std::string _image) : CImageBasis(_image) {};
  63. void Align(std::string _template1, int x1, int y1, std::string _template2, int x2, int y2, int deltax = 40, int deltay = 40, std::string imageROI = "");
  64. void CutAndSave(std::string _template1, int x1, int y1, int dx, int dy);
  65. };
  66. class CResizeImage : public CImageBasis
  67. {
  68. public:
  69. CResizeImage(std::string _image) : CImageBasis(_image) {};
  70. // CResizeImage(std::string _image, int _new_dx, int _new_dy);
  71. void Resize(int _new_dx, int _new_dy);
  72. };
  73. #endif