开始没有将数组赋值为零,不能正常显示。代码如下:
Mat srcImage=imread("test.png");
imshow("C",srcImage);
cvtColor(srcImage,srcImage,CV_RGB2GRAY);
threshold(srcImage,srcImage,127,255,CV_THRESH_BINARY);
//imshow("d",srcImage);
int *colheight =new int[srcImage.cols];
memset(colheight,0,srcImage.cols*4); //数组必须赋初值为零,否则出错。无法遍历数组。
// memset(colheight,0,src->width*4);
// CvScalar value;
int value;
for(int i=0;i
for(int j=0;j
{
//value=cvGet2D(src,j,i);
value=srcImage.at(i,j);
if(value==255)
{
colheight[j]++; //统计每列的白色像素点
}
}
/*
for(int i=0;i
{
CString str;
str.Format(TEXT("%d"),colheight[i]);
MessageBox(str);
}
*/
//srcImage.copyTo(histogramImage);
Mat histogramImage(srcImage.rows,srcImage.cols,CV_8UC1);
for(int i=0;i
for(int j=0;j
{
value=0; //设置为黑色。
histogramImage.at(i,j)=value;
}
imshow("d",histogramImage);
for(int i=0;i
for(int j=0;j
{
value=255; //设置为白色
histogramImage.at(j,i)=value;
}
//imshow("C",srcImage);
imshow("l",histogramImage);
参考资料:
图像水平方向的投影,http://blog.csdn.net/sxwup/article/details/21075251。