我是C ++的初学者,在使用Opencv矩阵时遇到一些困难。 我在Mat CV_8UC1上执行了两次For循环,以对图像进行阈值处理,但它在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一样,所以我不知道...