我正在使用OpenCv(使用C++语言)进行连接组件标签(CCL)操作。要查看CCL是否可靠工作,我必须在调试时检查图像中的每个像素值。我尝试将CCL的结果保存为图像,但是无法达到像素的数字值。在调试操作期间有什么方法可以做到这一点?

最佳答案

将CCL矩阵转换为[0,255]范围内的值,并将其保存为图像。例如:

cv::Mat ccl = ...; // ccl operation returning CV_8U
double min, max;
cv::minMaxLoc(ccl, &min, &max);
cv::Mat image = ccl * (255. / max);
cv::imwrite("ccl.png", image);

或将所有值存储在文件中:
std::ofstream f("ccl.txt");
f << "row col value" << std::endl;
for (int r = 0; r < ccl.rows; ++r) {
  unsigned char* row = ccl.ptr<unsigned char>(r);
  for (int c = 0; c < ccl.cols; ++c) {
    f << r << " " << c << " " << static_cast<int>(row[c]) << std::endl;
  }
}

10-06 02:42