OpenCV計算圖像的水平和垂直積分投影
更新時間:2018年12月26日 11:06:47 作者:長相憶兮長相憶
這篇文章主要為大家詳細介紹了OpenCV計算圖像的水平和垂直積分投影,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了OpenCV計算圖像的水平和垂直積分投影的具體代碼,供大家參考,具體內(nèi)容如下
#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; }
結(jié)果:
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
相關(guān)文章
詳解C語言中的內(nèi)存四區(qū)模型及結(jié)構(gòu)體對內(nèi)存的使用
這篇文章主要介紹了C語言中的內(nèi)存四區(qū)模型及結(jié)構(gòu)體對內(nèi)存的使用,包括結(jié)構(gòu)體中內(nèi)存泄漏情況的注意點提醒,需要的朋友可以參考下2016-03-03char str[] 與 char *str的區(qū)別詳細解析
以下是對char str[]與char *str的區(qū)別進行了詳細的介紹,需要的朋友可以過來參考下2013-09-09