OpenCV实现图像在水平方向上投影

来源:互联网 发布:js 字符串换行符 编辑:程序博客网 时间:2024/05/15 03:20

开始没有将数组赋值为零,不能正常显示。代码如下:


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<srcImage.rows;i++)  for(int j=0;j<srcImage.cols;j++)  {  //value=cvGet2D(src,j,i);value=srcImage.at<uchar>(i,j);if(value==255)  {  colheight[j]++; //统计每列的白色像素点  }  }  /*for(int i=0;i<srcImage.cols;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<srcImage.rows;i++)  for(int j=0;j<srcImage.cols;j++)  {  value=0;  //设置为黑色。histogramImage.at<uchar>(i,j)=value;  }  imshow("d",histogramImage);for(int i=0;i<srcImage.cols;i++)  for(int j=0;j<colheight[i];j++)  {  value=255;  //设置为白色histogramImage.at<uchar>(j,i)=value;}  //imshow("C",srcImage);  imshow("l",histogramImage); 



参考资料:

图像水平方向的投影,http://blog.csdn.net/sxwup/article/details/21075251。

0 0