使用OpenCV绘制固定的网格线集合

7
有没有可能在OpenCV示例文件的颜色检测样本的输出中,使用定义的点在所有交叉点处绘制用户定义的网格线?基本上,网络摄像头需要从你的上方检测到人类的头部和肩膀。然后当检测到一个人时,我需要有网格线,以便我能够知道从哪个最外层的网格(左肩)到下一个最外层的网格(右肩),在x和y轴上(前额和后脑)。之后,这些点必须被发送用于操作机械部件,如执行器和阀门。
我是OpenCV入门级用户,只有关于使用C++编程的初步知识。 我目前正在使用VS2008上的OpenCV 2.1。
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); 

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));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接