OpenCV是否提供瞭如何繪製和繪製圖形的功能?OpenCV中的繪圖和繪圖圖形
我發現這個鏈接是由Shervin Emami http://www.shervinemami.info/graphs.html這是他自己創建的。
OpenCV是否提供瞭如何繪製和繪製圖形的功能?OpenCV中的繪圖和繪圖圖形
我發現這個鏈接是由Shervin Emami http://www.shervinemami.info/graphs.html這是他自己創建的。
從我所看到的OpenCV不提供函數作爲其API的一部分繪製和繪製圖形,以cvDrawPlot(cvMat * data,other args ...)的形式。
大多數繪圖樣本僅使用OpenCV函數調用,涉及繪製一個繪圖,就好像其他圖像使用cvCreateImage
。
然後,他們通過數據迭代並用的OpenCV primites像cvRectangle
,cvLine
,cvCircle
和cvPoint
填充圖像。
然後他們撥打cvShowImage
顯示創建的繪圖圖像。
如果你找到的圖書館做了你想要的,那麼你可以使用它。
您也可以將數據寫入文件並調用外部繪圖工具,如gnuplot或調用使用其他可視化或繪圖(如VTK或plplot)的圖形來繪製圖形的函數。
除了您找到的另外一個庫是cvplot。
我不知道如何使用cvplot。但是謝謝。我在Shervin上試過的程序也完美無缺。只是我可以查看x和y軸的值。 – Mzk 2012-03-11 02:57:04
一個相當粗糙,但做它自己的方式,將意味着對心血管繪製線圖::墊圖像:
template <typename T>
cv::Mat plotGraph(std::vector<T>& vals, int YRange[2])
{
auto it = minmax_element(vals.begin(), vals.end());
float scale = 1./ceil(*it.second - *it.first);
float bias = *it.first;
int rows = YRange[1] - YRange[0] + 1;
cv::Mat image = Mat::zeros(rows, vals.size(), CV_8UC3);
image.setTo(0);
for (int i = 0; i < (int)vals.size()-1; i++)
{
cv::line(image, cv::Point(i, rows - 1 - (vals[i] - bias)*scale*YRange[1]), cv::Point(i+1, rows - 1 - (vals[i+1] - bias)*scale*YRange[1]), Scalar(255, 0, 0), 1);
}
return image;
}
用例:
vector<int> numbers(100);
std::iota (numbers.begin(), numbers.end(), 0);
int range[2] = {0, 100};
cv::Mat lineGraph = plotGraph(numbers, range);
我們可以再使用imshow
或Image Watch查看圖表
請記住,API已經改變(我使用的是OpenCV 3.0),'cv :: line'變成'cvLine'。方法簽名也改變了。 – 2015-11-10 11:08:03
我在新文檔中檢查了這一點。你確定嗎? http://docs.opencv.org/3.0-beta/modules/imgproc/doc/drawing_functions.html#line – 2015-11-10 13:14:33
我看到......這聽起來很奇怪,因爲在我的C++程序中它說''line':identifier not發現' – 2015-11-10 13:26:48
查看https://github.com/leonardvandriel/cvplot。您可以使用少量配置繪製圖形,並且在單個窗口中支持多個圖形。 (注:公然自我推銷)。
請避免鏈接.. – 2015-11-10 10:42:11