Opencv Mat For循环在假设之前停止

时间:2018-07-02 12:45:37

标签: c++ opencv image-processing

我是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一样,所以我不知道...

0 个答案:

没有答案