使用OpenCV画折线图
生活随笔
收集整理的這篇文章主要介紹了
使用OpenCV画折线图
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
??????使用OpenCV畫直方圖是一件輕松的事情,畫折線圖就沒有那么Easy了,還是使用一個庫吧:
GraphUtils 源代碼添加入工程?????? 原文鏈接:http://www.360doc.com/content/14/0424/12/16961511_371674057.shtml
???????使用的畫圖代碼:
//使用一個OpenCV的畫圖庫 #include "GraphUtils.h"//顯示文本里面的模式曲線 void CPicToolsDlg::OnBnClickedButtonShowpattern() {//打開目錄文件CFileDialog FileDlg(TRUE, _T("*.pcd"), NULL,OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY,_T("*.txt|*.txt| *.pcd|*.pcd| All Files (*.*) |*.*||"), NULL);//選取約定! FileDlg.m_ofn.lpstrTitle = _T("打開待顯示模式文本!!!"); // 打開文件對話框的標題名if (FileDlg.DoModal() != IDOK) {MessageBox("打開文件失敗!!!請重新檢測", "提示", 0);return ;}CString FilePath = FileDlg.GetPathName();std::string MyFileName = FilePath;//讀取文本到序列std::vector<cv::Point3f > Seq(0);this->readTxt2Seq(MyFileName,Seq);//顯示文本為模式//使用三維顯示this->showFeature3f(Seq );return; }//使用OpenCV顯示三維序列 //暫時顯示一維,三維的太困難了! //顯示一維曲線,最后顯示多個,人工分析模式 bool CPicToolsDlg::showFeature3f(std::vector<cv::Point3f > &Seq ) {//畫一個曲線//使用三色桌布吧,同時畫出x,y,zcv::Mat CanvasM(480,800,CV_8UC3);//CanvasM.CanvasM= cv::Mat::zeros(480,800,CV_8UC3);//全黑背景IplImage C =CanvasM;cvNot(&C,&C);//反色cv::Mat Canvas(&C);CanvasM =Canvas.clone();//克隆std::string BarName="特征的折線圖";int nArrayLength = Seq.size();float *Array = new float[nArrayLength];int delay_ms = 10;for (int i=0;i< nArrayLength;++i){Array[i] = 479 -Seq[i].x ;}drawLineGraph(BarName,Array, nArrayLength, delay_ms);return true; }//使用空白畫圖板 int CPicToolsDlg::drawLineGraph(std::string BarName,float *array, int nArrayLength, int delay_ms) {//使用畫圖工具const char *name = BarName.c_str();const float *arraySrc = array;IplImage *background = NULL;//nArrayLength =100;showFloatGraph(name, arraySrc, nArrayLength, delay_ms, background);return 1; }//讀取文本浮點數到三元組 序列 bool CPicToolsDlg::readTxt2Seq(std::string TxtName, std::vector<cv::Point3f > &Seq ) {std::string TestTxt(TxtName); // freopen(TestTxt.c_str(),"r",stdin);// 打開文件! //三元組,使用三元組逐個寫入float ViewValue,ViewValue2,ViewValue3; cv::Point3f P(0,0,0);Seq.resize(0);while (std::cin){std::cin >>ViewValue; // 利用 重定向輸入 浮點值 std::cin >>ViewValue2; std::cin >>ViewValue3; P.x = ViewValue;P.y = ViewValue2;P.z = ViewValue3;Seq.push_back(P);}return true; }最終的簡單顯示效果:
總結
以上是生活随笔為你收集整理的使用OpenCV画折线图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何免费破解Starus Word Re
- 下一篇: sw怎么录制宏? solidworks宏