日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

使用opencv畫曲線圖

 LSS133LSS 2014-04-24

下載地址:http://download.csdn.net/detail/xuluhui123/6369193

1、使用這個庫可以在屏幕上,或者圖像上畫曲線圖。

2、可以在測試一個算法時,非常方便的觀察到數(shù)字數(shù)組。

(1)展示一個簡單的數(shù)組曲線圖:

  1. showFloatGraph("Rotation Angle", floatArray, numFloats );//floatArray是浮點型數(shù)組首地址,numFloats是要畫出的數(shù)組的數(shù)量  

例如,畫出二值圖像的水平積分投影和垂直積分投影構(gòu)成的特征矢量:
  1.        Mat  hist_x=hist.jisuanHist(img,1);//水平投影  

  2. Mat  hist_y=hist.jisuanHist(img,0);//垂直投影  

  3. float * img_range=new float[hist_x.cols+hist_y.cols];  

  4. int i;  

  5. for( i=0;i<hist_x.cols;i++)  

  6. {     

  7.     img_range[i]=(float)hist_x.at<double>(i);  

  8. }  

  9. for(int j=0;i<hist_x.cols+hist_y.cols;i++,j++)  

  10. {  

  11.     img_range[i]=(float)hist_y.at<double>(j);  

  12. }  

  13.     showFloatGraph("水平投影和垂直投影構(gòu)成的特征矢量", img_range,hist_x.cols+hist_y.cols,0);  

如下圖:


同樣的也可以顯示一個float類型的vector或者int,甚至字節(jié)數(shù)組

  1. showFloatGraph("Rotation Angle", &floatVector[0], floatVector.size());  

  2. showIntGraph("Rotation Angle", &intVector[0], intVector.size());  

  3. showUCharGraph("Pixel Values", pixelData, numPixels);  

  1. showIntGraph("Rotation Angle", &intVector[0], intVector.size(), 0);//設置第三個顯示時間參數(shù)為0,等待,直到用戶按鍵。  

(2)在一個圖像上畫多個曲線

  1. IplImage *graphImg = drawFloatGraph(&floatVec1[0], floatVec1.size(), NULL,  

  2.     -25,25, 400,180, "X Angle (blue is truth, green is POSIT)" );//-25和25是數(shù)據(jù)最小值和最大值,400是窗口寬,180為高,"x angel"為曲線標簽  

  3. drawFloatGraph(&floatVec2[0], floatVec2.size(), graphImg, -25,25, 400,180);//在同樣的圖像上畫曲線  

  4. cvSaveImage("my_graph.jpg", graphImg);  

  5. cvReleaseImage(&graphImg);  



(3)在一個存在的圖像上畫曲線

  1. IplImage *bgImg = cvLoadImage("lena.jpg");  

  2. int w = bgImg->width;  

  3. int h = bgImg->height;  

  4. drawFloatGraph(floatArray, numFloats, bgImg, -25,25, w, h, "Yaw (in degrees)");  

  5. showImage(bgImg, 0, "Rotation Angle");  

  6. cvReleaseImage(&bgImg);  

(4)將三個曲線畫在一個大的圖像上

  1. IplImage *dstImage = cvLoadImage("lena.jpg");  

  2. int W = 400, H = 150;  

  3. float RANGE = 25.0f;  

  4. char *name;  

  5. name = "X Angle (blue is truth, green is POSIT)";  

  6. setGraphColor(0);   // Start with a blue graph  

  7. // Set the position of the graph within the image  

  8. CvRect region = cvRect(dstImage->width-1 - W-10, 10, W+20, H+20);  

  9. cvSetImageROI(dstImage, region);  

  10. drawFloatGraph(&vecX1[0], vecX1.size(), dstImage, -RANGE,+RANGE, W,H, name);  

  11. drawFloatGraph(&vecX2[0], vecX2.size(), dstImage, -RANGE,+RANGE, W,H);  

  12. name = "Y Angle (blue is truth, green is POSIT)";  

  13. setGraphColor(0);   // Start with a blue graph  

  14. // Set the position of the graph within the image  

  15. region.y += H+20;  

  16. cvSetImageROI(dstImage, region);  

  17. drawFloatGraph(&vecY1[0], vecY1.size(), dstImage, -RANGE,+RANGE, W,H, name);  

  18. drawFloatGraph(&vecY2[0], vecY2.size(), dstImage, -RANGE,+RANGE, W,H);  

  19. name = "Z Angle (blue is truth, green is POSIT)";  

  20. setGraphColor(0);   // Start with a blue graph  

  21. // Set the position of the graph within the image  

  22. region.y += H+20;  

  23. cvSetImageROI(dstImage, region);  

  24. drawFloatGraph(&vecZ1[0], vecZ1.size(), dstImage, -RANGE,+RANGE, W,H, name);  

  25. drawFloatGraph(&vecZ2[0], vecZ2.size(), dstImage, -RANGE,+RANGE, W,H);  

  26. cvResetImageROI(dstImage);  

  27. showImage(dstImage);  

  28. cvReleaseImage(&dstImage);  

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多