gpt4 book ai didi

opencv - cvtColor 在转换时崩溃

转载 作者:太空宇宙 更新时间:2023-11-03 21:56:59 24 4
gpt4 key购买 nike

我将带有外部 dll 的相机帧加载到我的 OpenCV 程序中。我可以看到框架 cv::imshow("edges", frame); 一切正常。 frame.channels() 给了我 3 个 channel ,但是当我尝试 cv::cvtColor(frame, gray, CV_BGR2GRAY); 应用程序崩溃时。

CreateImage(System::Byte *imgData, int height, int width,int show)
{

frame = cv::Mat(height, width, CV_8UC3, imgData);

if (show > 0)
cv::imshow("edges", frame); //I can see myself

return frame.channels(); //three channels
}

void ConvertAndProcess()
{
cv::Mat gray;

cv::cvtColor(frame, gray, CV_BGR2GRAY); //crash...

//do something
}

我已经挖掘了一段时间但没有结果。我做错了什么?

最佳答案

小心!

 frame = cv::Mat(height, width, CV_8UC3, imgData);

这是一个“借用”的指针。当 imgData 离开作用域时(在函数末尾),frame.data 无效。

这意味着,如果您以这种方式构造框架,则不能指望它在 ConvertAndProcess() 中有效。

你可以 clone() 它,以实现“深拷贝”:

 frame = cv::Mat(height, width, CV_8UC3, imgData).clone();

关于opencv - cvtColor 在转换时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25404767/

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