7

是否可以根据 OpenCV 样本文件中颜色检测样本的输出在所有交叉点绘制用户定义的网格线?基本上,网络摄像头需要从您上方检测人的头部和肩膀。然后,当检测到一个人时,我需要网格线在那里,以便我能够知道在 x 和 y 轴(前额和后脑勺)。此后,必须将这些点发送给执行器和阀门等机械部件的操作。

我是一个入门级的 OpenCV 用户,只有关于使用 C++ 的初学者知识。我目前在 VS2008 上使用 OpenCV 2.1。

4

2 回答 2

6

很难说出你的问题到底是什么。

如果您只想绘制网格线,则没有 opencv 函数可以做到这一点。要在网格中绘制线条,您可以cv::line在循环中使用,然后使用嵌套循环绘制交叉点。

// assume that mat.type=CV_8UC3

dist=50;

int width=mat.size().width;
int height=mat.size().height;

for(int i=0;i<height;i+=dist)
  cv::line(mat,Point(0,i),Point(width,i),cv::Scalar(255,255,255));

for(int i=0;i<width;i+=dist)
  cv::line(mat,Point(i,0),Point(i,height),cv::Scalar(255,255,255));

for(int i=0;i<width;i+=dist)
  for(int j=0;j<height;j+=dist)
    mat.at<cv::Vec3b>(i,j)=cv::Scalar(10,10,10); 
于 2012-11-29T16:16:25.260 回答
0

用于使用 OpenCV 线函数在图像上绘制网格

Mat mat_img(image);
int stepSize = 65;

int width = mat_img.size().width;
int height = mat_img.size().height;

for (int i = 0; i<height; i += stepSize)
    cv::line(mat_img, Point(0, i), Point(width, i), cv::Scalar(0, 255, 255));

for (int i = 0; i<width; i += stepsSize)
    cv::line(mat_img, Point(i, 0), Point(i, height), cv::Scalar(255, 0, 255));
于 2015-11-06T08:24:09.260 回答