// // Created by lloyd on 2020/9/28. // #include #include "opencv2/opencv.hpp" #include #include "gtimgcreator.h" /* ***生成功图的mat对象(归一法1、2形成的图像大小一致,标准点个数一致) @mat1 归一法1得图像 @mat1 归一法2得图像 @matrows 图像的行数 也就是height 像素值 @matcols 图像的列数 也就是width 像素值 @gtdata1 归一法1坐标点x,y数组 @gtdata2归一法2坐标点x,y数组 @pxcount 坐标点个数 @oneImg 1表示使用叠加图(法1法2在图1) 2表示分开显示 法1 法2 */ void gtimgcreator::creatGTMat(cv::Mat &mat1, cv::Mat &mat2, int matrows, int matcols, std::vector> >data1, std::vector> >data2, int pxcount, int oneImg) { for (int i = 0; i < matrows; i++) { for (int j = 0; j < matcols; j++) { cv::Vec3b &rgba1 = mat1.at(i, j); //rgba1[0] = UCHAR_MAX; rgba1[0] = 255; rgba1[1] = 255; rgba1[2] = 255; cv::Vec3b &rgba2 = mat2.at(i, j); //rgba2[0] = UCHAR_MAX; rgba2[0] = 255; rgba2[1] = 255; rgba2[2] = 255; } } for (int pxindex = 0; pxindex < pxcount; pxindex++) { cv::Vec3b &rgba1 = mat1.at(matrows - gtdata1[pxindex][1], gtdata1[pxindex][0]); //rgba1[0] = UCHAR_MAX; rgba1[0] = 255; rgba1[1] = 0; rgba1[2] = 0; if (oneImg == 1) { //将两种归一化的图像放在一起 cv::Vec3b &rgba1_1 = mat1.at(matrows - gtdata2[pxindex][1], gtdata2[pxindex][0]); //rgba1_1[0] = UCHAR_MAX; rgba1_1[0] = 0; rgba1_1[1] = 0; rgba1_1[2] = 255; } cv::Vec3b &rgba2 = mat2.at(matrows - gtdata2[pxindex][1], gtdata2[pxindex][0]); //rgba2[0] = UCHAR_MAX; rgba2[0] = 0; rgba2[1] = 255; rgba2[2] = 0; } }