繁体   English   中英

Opencv cv :: Subtract方法抛出System.Runtime.InteropServices.SEHException异常

[英]Opencv cv::Subtract method throwing System.Runtime.InteropServices.SEHException Exception

我目前正在尝试在Opencv中实现Lucy Richardson算法,当要在我的程序中运行'cv :: subtract'方法时,它会抛出一个InteropServices异常(下面的堆栈跟踪)

************** Exception Text **************
System.Runtime.InteropServices.SEHException (0x80004005): External has thrown an exception. 
at cv.Mat.=(Mat* , MatExpr* expr) in e:\opencv\opencv\build\include\opencv2\core\mat.inl.hpp:line 3107
at LucyRichardson.LucyRich(LucyRichardson* , Mat* , basic_string<char\,std::char_traits<char>\,std::allocator<char> >* imagePath) in e:\documents\development\realtimeimageprocessing\imageprocessing\imageprocessing\lucyrichardson.cpp:line 63

下面是发生错误的代码块,它被抛出第二行。

im_correction = cv::Mat (cvSize(383, 357), 8, 1);
cv::subtract(im, im_conv_kernel, im_correction);
cv::namedWindow("Sub");
cv::imshow("Sub", im_correction);

变量imim_conv_kernel均为cv :: Mat类型,并且已正确填充,并且在保存减法结果之前,我尝试创建变量im_correction的版本。

我在程序的其他部分使用cv :: subtractions很好。

有谁知道为什么会发生此错误以及如何解决? 还是如果有其他方法可以尝试减法?

我已经解决了问题所在,以确保所有图像都属于同一类型。 -将以下三行相加后,再执行减法即可。

im.convertTo(im, CV_8UC1);
im_conv_kernel.convertTo(im_conv_kernel, CV_8UC1);
im_correction.convertTo(im_correction, CV_8UC1);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM