Я новичок в C ++ и испытываю некоторые трудности с использованием матриц Opencv.
Я сделал двойной цикл For на мате CV_8UC1, чтобы создать порог для моего изображения, но он останавливается на i = 0 и j = 610/620 (не всегда одно и то же значение для j).
Изображение имеет размер 1920x1080 пикселей.
inputframe и outputframe имеют одинаковый тип.
Мой код введите в if (m_Tracker_On == false) и не идите дальше, потому что он останавливается внутри.
void TorpedoTracker::hsv_thresholding(Mat& inputframe,Mat& outputframe)
{
uint8_t black=0;
uint8_t white=255;
if (m_Tracker_On==false)
{
cout << "tracker off " << endl;
for (int i=0; i<m_cols;i++)
{
for (int j=0; j<m_rows;j++)
{
if ((inputframe.at<uint8_t>(j,i)<m_LowHSVThreshValue0) || (inputframe.at<uint8_t>(j,i)>m_HighHSVThreshValue0))
{
outputframe.at<uint8_t>(j,i)=black;
}
else
{
outputframe.at<uint8_t>(j,i)=white;
}
}
}
m_Tracker_On=true;
cout << "now tracker on " << endl;
}
else
{
for (int i=0; i<m_ROISize*2;i++)
{
for (int j=0; j<m_ROISize*2;j++)
{
if (inputframe.at<uint8_t>(j,i)<m_LowHSVThreshValue || inputframe.at<uint8_t>(j,i)>m_HighHSVThreshValue)
{
outputframe.at<uint8_t>(j,i)=black;
}
else
{
outputframe.at<uint8_t>(j,i)=white;
}
}
}
}
}
Сначала я подумал, что это проблема типа, как будто я пытался получить доступ к типу переменной большего размера, чем 8 бит, но я использую только uint8, поэтому я не знаю ...