图像处理中垂直投影问题

垂直投影后出来的效果图不对,哪位勇士能帮忙看下是什么原因?

cv::Mat getVerProjImage(const cv::Mat& image)
{
cv::Mat matTmp = image.clone();
int height = matTmp.rows;
int width = matTmp.cols;//图像的高和宽
int tmp = 0;
int* projArray = new int[width];
memset(projArray, 0, width * 4);
imwrite("D:\verImg.jpg", image);

//循环访问图像数据,查找每一列的255点的总数
for (int col = 0; col < width; col++)
{
    tmp = 0;
    for (int row = 0; row < height; row++)
    {
        if (matTmp.at<uchar>(row, col) == 255)/*白色像素*/
        {
            tmp++;
            //cout << row << "," << col << endl;
        }
    }
    projArray[col] = tmp;
}
//创建并绘制垂直投影图像
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));
    cv::line(projImg, cv::Point(col, 0), cv::Point(col, projArray[col]), cv::Scalar::all(0));
}

delete[] projArray;//删除new数组
return  projImg;

}

原图:

img

效果图:

img

projArray[col] = tmp;
应改为
projArray[col] = (uchar)(1.0*tmp/height*255.0);