Btc*_*ces 1 c++ performance opencv
我正在对 a应用侵蚀操作Mat
,但速度非常慢。
由于在 OpenCV 中,您可以通过两种不同的方式(使用morphologyEx
和使用erode
)来应用它。
我正在测量(大约)它运行的速度,但它们都非常慢!
这部分的代码是:
int morph_size = 20;
Mat element = getStructuringElement( MORPH_ELLIPSE, cv::Size( 2*morph_size + 1 , 2*morph_size +1), cv::Point( morph_size, morph_size ) );
// morphologyEx(imgMascara, imgMascara, MORPH_ERODE, element );
finish_time5 = clock();
erode( imgMascara, imgMascara, element );
finish_time6 = clock();
Run Code Online (Sandbox Code Playgroud)
哪里imgMascara
有Mat
. 然后,当我测量从开始到finish_time5
和的时间时finish_time6
,我得到:
0.0198s
0.887s
Run Code Online (Sandbox Code Playgroud)
知道为什么需要太多时间吗?(它发生在两个函数,morphologyEx
和erode
)。
先感谢您
我找到了侵蚀缓慢的原因。有以下三种不同的原因:
但是,我不能这样做,因为我需要这个内核大小。于是我继续寻找另一个原因,结果发现:
MORPH_ELLIPSE
)。如果我将其更改为MORPH_RECT
或MORPH_CROSS
,它会变得非常快。由于我的应用程序适用于所有这些应用程序,因此我将其更改为MORP_RECT
.
感谢大家的评论,这些评论帮助我找到了这些