gtimgcreator.cpp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. //
  2. // Created by lloyd on 2020/9/28.
  3. //
  4. #include <iostream>
  5. #include "opencv2/opencv.hpp"
  6. #include <vector>
  7. #include "gtimgcreator.h"
  8. /*
  9. ***生成功图的mat对象(归一法1、2形成的图像大小一致,标准点个数一致)
  10. @mat1 归一法1得图像
  11. @mat1 归一法2得图像
  12. @matrows 图像的行数 也就是height 像素值
  13. @matcols 图像的列数 也就是width 像素值
  14. @gtdata1 归一法1坐标点x,y数组
  15. @gtdata2归一法2坐标点x,y数组
  16. @pxcount 坐标点个数
  17. @oneImg 1表示使用叠加图(法1法2在图1) 2表示分开显示 法1 法2
  18. */
  19. void gtimgcreator::creatGTMat(cv::Mat &mat1, cv::Mat &mat2, int matrows, int matcols, std::vector<std::vector<int>> &gtdata1,
  20. std::vector<std::vector<int>> &gtdata2, int pxcount, int oneImg) {
  21. for (int i = 0; i < matrows; i++) {
  22. for (int j = 0; j < matcols; j++) {
  23. cv::Vec3b &rgba1 = mat1.at<cv::Vec3b>(i, j);
  24. //rgba1[0] = UCHAR_MAX;
  25. rgba1[0] = 255;
  26. rgba1[1] = 255;
  27. rgba1[2] = 255;
  28. cv::Vec3b &rgba2 = mat2.at<cv::Vec3b>(i, j);
  29. //rgba2[0] = UCHAR_MAX;
  30. rgba2[0] = 255;
  31. rgba2[1] = 255;
  32. rgba2[2] = 255;
  33. }
  34. }
  35. for (int pxindex = 0; pxindex < pxcount; pxindex++) {
  36. cv::Vec3b &rgba1 = mat1.at<cv::Vec3b>(matrows - gtdata1[pxindex][1], gtdata1[pxindex][0]);
  37. //rgba1[0] = UCHAR_MAX;
  38. rgba1[0] = 255;
  39. rgba1[1] = 0;
  40. rgba1[2] = 0;
  41. if (oneImg == 1) {
  42. //将两种归一化的图像放在一起
  43. cv::Vec3b &rgba1_1 = mat1.at<cv::Vec3b>(matrows - gtdata2[pxindex][1], gtdata2[pxindex][0]);
  44. //rgba1_1[0] = UCHAR_MAX;
  45. rgba1_1[0] = 0;
  46. rgba1_1[1] = 0;
  47. rgba1_1[2] = 255;
  48. }
  49. cv::Vec3b &rgba2 = mat2.at<cv::Vec3b>(matrows - gtdata2[pxindex][1], gtdata2[pxindex][0]);
  50. //rgba2[0] = UCHAR_MAX;
  51. rgba2[0] = 0;
  52. rgba2[1] = 255;
  53. rgba2[2] = 0;
  54. }
  55. }