Рисование фиксированного набора линий сетки с помощью OpenCV

Можно ли нарисовать определяемые пользователем линии сетки с определенными точками на всех пересечениях по сравнению с выводом образца обнаружения цвета в файле образца OpenCV? По сути, веб-камера должна обнаруживать человеческую голову и плечи над вами. Затем, когда человека обнаруживают, мне нужны линии сетки, чтобы я мог знать, от какой самой внешней сетки (левое плечо) до следующей самой внешней сетки (правое плечо), по осям x и y (лоб и затылок). После этого эти точки должны быть отправлены для работы механических частей, таких как привод и клапаны.

Я пользователь OpenCV начального уровня, только начинающий обладатель знаний по работе с C ++.
В настоящее время я использую OpenCV 2.1 на VS2008.

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

Другие решения

Для рисования сетки на изображении с помощью функции линии 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));
0

По вопросам рекламы [email protected]