克隆cv::Mat
時出現段錯誤。兩個函數被調用,並在m_mask
工作,我的類的成員變量(不是指針):cv ::: Mat克隆段錯誤
設置屏蔽:
void SetMask(QImage mask)
{
if(!mask.isNull() && mask.depth() == 1)
{
std::cout << "Mask width: " << mask.width() << " and mask height: " << mask.height() << std::endl << std::flush;
if(mask.width() != m_mask.cols || mask.height() != m_mask.rows)
m_mask.create(mask.height(), mask.width(), CV_8UC1);
if(m_mask.data == 0)
std::cout << "MALLOC FAILED" << std::endl << std::flush;
//Copy data here
cv::imshow("OpenCV Image", m_mask);
}
else
m_mask = cv::Scalar(0);
}
然後用面膜:
QString MaskToXML()
{
QString xml_out;
if(!m_mask.empty())
{
cv::Mat workspace = m_mask.clone(); //Clone our mask - SEGFAULT HERE
//Run the contour code
std::vector< std::vector<cv::Point> > contours;
cv::findContours(workspace, contours, CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE);
//do stuff
}
return xml_out;
}
調試器說了什麼? –
這是最糟糕的部分,我無法從調試器中找到任何信息。我編譯OpenCV並沒有用調試符號編譯它......事實上,我只是想出了我的問題是什麼......它必須通過代碼來處理我的拷貝數據......我認爲它是正確的,但它不是。我需要更新這個問題。 – Constantin
你有沒有試過Mat :: copyTo而不是克隆?它不回答你的問題,但也許它可能是一種解決方法。 – SMK