OpenCV: невозможно создать матрицу с отрицательными числами - PullRequest
1 голос
/ 13 января 2012

Я использую OpenCV 2.2 на MS Visual C ++ 2010 на Windows 7. 32-битное приложение.

Я пытаюсь создать следующую матрицу.[-1 0 1].

Я пытаюсь

cv::Mat Kernel = cv::Mat::zeros(1, 3, CV_8S );

Kernel.data[0] = -1;

Kernel.data[2] = 1;

Я получаю [255 0 1].

Я получаю один и тот же результат независимо от того, чем я заменяю CV_8S.

Кто-нибудь может увидеть, что я делаю неправильно?

Спасибо, Питер

1 Ответ

2 голосов
/ 13 января 2012

элемент данных cv::Mat на самом деле uchar*, а не char* независимо от фактического типа матрицы (т. Е. CV_8U), Полагаю, вы печатаете значения, перебирая kernel.data без приведения данных от uchar* к char* (или проверки их с помощью часов, не делая того же самого), и поэтому вы не можете видеть отрицательное число.

Кроме того, у вас есть более приятный синтаксис для достижения того же

cv::Mat kernel = (cv::Mat_<char>(1,3) << -1, 0, -1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...