日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用OpenCV画折线图

發布時間:2023/12/31 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用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画折线图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。