Я слежу за изучением книги opencv
(https://www.amazon.com/Learning-OpenCV-Computer-Vision-Library/dp/0596516134, а затем ссылка на книгу https://pdfs.semanticscholar.org/9a67/4d82cd4f47477e3f1aa7b89a3d9f6e3894b8.pdf?_ga=2.62513452.1463426740.1585949302-836919348.1585949302)
Я работаю через упражнение;
"Это упражнение приучит вас к мысли о множестве функций, принимающих типы матриц. Создайте двумерную матрицу с тремя каналами байтов типа с размером данных 100 на 100. Установите все значения до 0.
a. Нарисуйте круг в матрице, используя void cvCircle( CvArr* img, CvPoint center,
intradius, CvScalar color, int thickness=1, int line_type=8, int shift=0 ).
b. Отобразите это изображение, используя методы, описанные в главе 2. "
#include <opencv2/core/core.hpp>
#include <iostream>
int main () {
CvPoint Center = cvPoint(50,50);
CvMat mat = cvMat(
100,
100,
CV_8UC3,
);
CvCircle Circle = cvCircle( //I have also tried just "void cvCircle()"
&mat,
Center,
50
);
return 0;
}
У меня нет проблемы с частью b проблемы, это в основном часть a. Также часть моей проблемы также может быть связана с c ++. В описании cvMat
четвертый аргумент указан как void* data = NULL
, что, как я предполагаю, означает, что он очищает все записи в матрице для установки его значений. Если это так, я не знаю, как установить значения на 0.
Где я объявляю Center
Я пытаюсь установить начало круга в центре матрицы, хотя я не уверен как сказать cvCircle
как. Я написал 50,50 в надежде, что, поскольку вы вначале сообщаете функции, что она работает с mat
, она будет знать, что это центр матрицы, но это был полный выстрел в темноте.
Я получаю сообщения об ошибках типа "CvCircle не был объявлен в этой области" или "переменная или поле cvCircle объявлено void" при использовании void. Это могут быть проблемы с компиляцией, или я не включаю правильные заголовочные файлы (в которых я сомневаюсь).