if(roiStartX < 0 || roiStartY < 0 || roiStartX + roiWidth > srcContours.cols || roiStartY + roiHeight > srcContours.rows ){ std::cout << "[ERROR] Possibly incomplete block detected!" << std::endl; std::string command = "xdg-open " + packagePath + "/images/src_Color.png"; const char *exec = command.c_str(); system(exec); } roi = srcContours(cv::Rect(roiStartX, roiStartY, roiWidth, roiHeight)); classId = detectData.final_classId[i]; if(classId == 6) { thresh = bf.yellowSolo(roi); } else { thresh = bf.generalProcess(roi); } rotRect = bf.findBlockContours(thresh); bitsCode = bf.blockExtract(thresh, classId, codeMap, rotRect); bf.setPosition(classId, bitsCode, rotRect, center, angle); center += roiStart; bf.drawRect(canvas, rotRect, roiStart); cv::circle(canvas, center, 3, cv::Scalar(255, 255, 255), 2, 8); std::vector<cv::Point2f> pt = bf.getRotPoints(rotRect); float rotWidth = sqrtf(powf((pt[0].x - pt[3].x), 2) + powf((pt[0].y - pt[3].y), 2)); float rotHeight = sqrtf(powf((pt[0].x - pt[1].x), 2) + powf((pt[0].y - pt[1].y), 2)); // std::cout << "Color: " << color[classId] << ",\t center: " << center << ",\t Rect width: " << rotWidth << ",\t Rect Height: " << rotHeight << std::endl; std::vector<float> t1{center.x, center.y, angle, rotWidth, rotHeight}; pointSets.push_back(classId, t1); } std::cout << "[INFO] Writing Images to file......" << std::endl;
时间: 2023-11-26 08:06:40 浏览: 106
Python库 | texttable-0.9.0.tar.gz
这段代码看起来是图像处理相关的代码,包含了一些检测和提取图像中的信息的操作。具体来说,代码首先检查感兴趣区域的位置是否正确,如果不正确则输出错误信息,并打开源图像文件。接着,代码将感兴趣区域提取出来,进行处理并找到区块的轮廓。接下来,代码提取出区块的编码信息,并将区块的位置和旋转角度等信息保存到一个向量中。最后,代码将处理后的图像保存到文件中。
需要注意的是,这段代码中有一些函数调用和变量,例如bf.yellowSolo()、bf.generalProcess()、bf.findBlockContours()等,需要结合整个代码的上下文才能更好地理解其含义和作用。
阅读全文