gpt4 book ai didi

c++ - cv:::Mat 克隆段错误

转载 作者:搜寻专家 更新时间:2023-10-31 01:51:11 28 4
gpt4 key购买 nike

克隆 cv::Mat 时出现段错误。调用了两个函数,并在 m_mask 我类的一个成员变量(不是指针)上工作:

设置掩码:

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);
}

然后使用 mask :

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;
}

最佳答案

我有一个堆损坏...从现在开始我的一般经验法则...如果 cv::Mat 出现段错误,我在某处损坏了堆。

编辑:“某处”是指您可以安全地假设 cv::Mat 是正确的并且它使用的函数是正确的。您可以安全地假设您正在自己的某个地方破坏内存,可能是您的指针或数据结构之一。

关于c++ - cv:::Mat 克隆段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14077150/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com