效果图
输入图像
输出图像
代码
cv::Mat getVerProjImage(const cv::Mat &image)
{
cv::Mat matTmp = image.clone();
int maxCol = 0, maxNum = 0;
int minCol = 0, minNum = matTmp.rows;
int height = matTmp.rows, width = matTmp.cols;
int tmp = 0;
int *projArray = new int[width];
cv::namedWindow("matTmp", 0);
cv::imshow("matTmp", matTmp);
for (int col = 0; col < width; ++col)
{
tmp = 0;
for (int row = 0; row < height; ++row)
{
if (matTmp.at<uchar>(row, col) == 255)
{
++tmp;
}
}
projArray[col] = tmp;
if (tmp > maxNum)
{
maxNum = tmp;
maxCol = col;
}
if (tmp < minNum)
{
minNum = tmp;
minCol = col;
}
}
cv::Mat projImg(height, width, CV_8U, cv::Scalar(255));
for (int col = 0; col < width; ++col)
{
cv::line(projImg, cv::Point(col, height - projArray[col]), cv::Point(col, height - 1), cv::Scalar::all(0));
}
delete[] projArray;
return projImg;
}
使用示例:
Mat VerProjImage;
VerProjImage = getVerProjImage(image_part);
参考:
https://blog.csdn.net/sjhuangx/article/details/50100451