利用OpenCV计算图像的垂直和水平积分投影
来源:互联网 发布:napster软件 编辑:程序博客网 时间:2024/05/29 09:11
代码:
- #include <cv.h>
- #include <highgui.h>
- #pragma comment( lib, "cv.lib" )
- #pragma comment( lib, "cxcore.lib" )
- #pragma comment( lib, "highgui.lib" )
- int main()
- {
- IplImage * src=cvLoadImage("lena.jpg",0);
- // cvSmooth(src,src,CV_BLUR,3,3,0,0);
- cvThreshold(src,src,50,255,CV_THRESH_BINARY_INV);
- IplImage* paintx=cvCreateImage( cvGetSize(src),IPL_DEPTH_8U, 1 );
- IplImage* painty=cvCreateImage( cvGetSize(src),IPL_DEPTH_8U, 1 );
- cvZero(paintx);
- cvZero(painty);
- int* v=new int[src->width];
- int* h=new int[src->height];
- memset(v,0,src->width*4);
- memset(h,0,src->height*4);
- int x,y;
- CvScalar s,t;
- for(x=0;x<src->width;x++)
- {
- for(y=0;y<src->height;y++)
- {
- s=cvGet2D(src,y,x);
- if(s.val[0]==0)
- v[x]++;
- }
- }
- for(x=0;x<src->width;x++)
- {
- for(y=0;y<v[x];y++)
- {
- t.val[0]=255;
- cvSet2D(paintx,y,x,t); //把为0的像素变255(变白),非0的像素则为0(变黑)
- }
- }
- for(y=0;y<src->height;y++)
- {
- for(x=0;x<src->width;x++)
- {
- s=cvGet2D(src,y,x);
- if(s.val[0]==0)
- h[y]++;
- }
- }
- for(y=0;y<src->height;y++)
- {
- for(x=0;x<h[y];x++)
- {
- t.val[0]=255;
- cvSet2D(painty,y,x,t);
- }
- }
- cvNamedWindow("二值图像",1);
- cvNamedWindow("垂直积分投影",1);
- cvNamedWindow("水平积分投影",1);
- cvShowImage("二值图像",src);
- cvShowImage("垂直积分投影",paintx);
- cvShowImage("水平积分投影",painty);
- cvWaitKey(0);
- cvDestroyAllWindows();
- cvReleaseImage(&src);
- cvReleaseImage(&paintx);
- cvReleaseImage(&painty);
- return 0;
- }
- #include <cv.h>
- #include <highgui.h>
- #pragma comment( lib, "cv.lib" )
- #pragma comment( lib, "cxcore.lib" )
- #pragma comment( lib, "highgui.lib" )
- int main()
- {
- IplImage * src=cvLoadImage("lena.jpg",0);
- // cvSmooth(src,src,CV_BLUR,3,3,0,0);
- cvThreshold(src,src,50,255,CV_THRESH_BINARY_INV);
- IplImage* paintx=cvCreateImage( cvGetSize(src),IPL_DEPTH_8U, 1 );
- IplImage* painty=cvCreateImage( cvGetSize(src),IPL_DEPTH_8U, 1 );
- cvZero(paintx);
- cvZero(painty);
- int* v=new int[src->width];
- int* h=new int[src->height];
- memset(v,0,src->width*4);
- memset(h,0,src->height*4);
- int x,y;
- CvScalar s,t;
- for(x=0;x<src->width;x++)
- {
- for(y=0;y<src->height;y++)
- {
- s=cvGet2D(src,y,x);
- if(s.val[0]==0)
- v[x]++;
- }
- }
- for(x=0;x<src->width;x++)
- {
- for(y=0;y<v[x];y++)
- {
- t.val[0]=255;
- cvSet2D(paintx,y,x,t);
- }
- }
- for(y=0;y<src->height;y++)
- {
- for(x=0;x<src->width;x++)
- {
- s=cvGet2D(src,y,x);
- if(s.val[0]==0)
- h[y]++;
- }
- }
- for(y=0;y<src->height;y++)
- {
- for(x=0;x<h[y];x++)
- {
- t.val[0]=255;
- cvSet2D(painty,y,x,t);
- }
- }
- cvNamedWindow("二值图像",1);
- cvNamedWindow("垂直积分投影",1);
- cvNamedWindow("水平积分投影",1);
- cvShowImage("二值图像",src);
- cvShowImage("垂直积分投影",paintx);
- cvShowImage("水平积分投影",painty);
- cvWaitKey(0);
- cvDestroyAllWindows();
- cvReleaseImage(&src);
- cvReleaseImage(&paintx);
- cvReleaseImage(&painty);
- return 0;
- }
下面是代码运行的结果:
0 0
- 利用OpenCV计算图像的垂直和水平积分投影
- 利用OpenCV计算图像的垂直和水平积分投影
- 利用OpenCV计算图像的垂直和水平积分投影
- 【OpenCV】计算图像的水平和垂直积分投影
- opencv学习---计算图像的水平积分投影和垂直积分投影
- opencv学习---计算图像的水平积分投影和垂直积分投影
- opencv计算图像的水平投影和垂直投影
- 使用OpenCV2.x计算图像的水平和垂直积分投影
- 使用OpenCV2.x计算图像的水平和垂直积分投影
- 图像的水平与垂直积分投影
- 图像的水平与垂直积分投影
- Matlab实现灰度图像的水平和垂直投影
- 对OpenCV mat进行水平和垂直方向的投影
- 水平投影和垂直投影的用处
- OpenCV mat类实现水平投影和垂直投影
- 基于水平投影,垂直投影的字符图像分割思路和代码实现
- opencv-python图像垂直投影
- 关于车牌的垂直和水平投影代码 C++
- 【面试笔试-c/c++】2013年校园招聘创新工场笔试题(北邮场)
- 更新日志 - 关于 iOS9 设备的安装及其他优化
- 模型&xib
- iOS入门(二十三)内存管理
- 抓包报文分析
- 利用OpenCV计算图像的垂直和水平积分投影
- 门户级UGC系统的技术进化路线——新浪新闻评论系统的架构演进和经验总结
- @property参数
- JDBC+MySql 1(编码问题的处理)
- 图论_最短路_例题_Frogger(POJ 2253)
- Python小技巧之——基类初始化
- KVC&KVO
- 24-IO流-67-IO流(编码解码问题_1)
- Android-Universal-Image-Loaderde 图片异步加载并缓存