OpenCV——svd速度优化

在发现opencv运行SVD::compute()过程太慢,一张299*299的图片Debug要几s,release也要0.5s。

第一次尝试:

将299*299图像分成13份23*299的图像运行svd。release模式下能达到0.25s,将近快一倍。

第二次:

加上UMat,成绩感人。release模式下速度0.02s,又快了10倍。

void main()
{
    Mat img = Mat(height, width, CV_8UC1, image);
    Mat src_ = img.clone();
    Mat dst_show = Mat(img.size(), CV_8UC1, Scalar(0));
    int set_height = 23;
    double t1 = getTickCount();
    for (int i = 0; i < 13; i++)
    {
	Mat src;
	src = Mat(img, Rect(0, 0 + i * set_height, img.cols, set_height));

	src.convertTo(src, CV_64FC1);
	UMat U, W, V;

	SVD::compute(src, W, U, V);

	int set_dim = min(src.rows, src.cols);
	
	UMat W_;
	Mat(set_dim, set_dim, CV_64FC1, Scalar(0)).copyTo(W_);
		
	for (int i = 0; i < kvalue; i++)
	{
		W_.getMat(ACCESS_READ).at<double>(i, i) = W.getMat(ACCESS_READ).at<dou
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值