OpenCV GApi初探

作者:Parker2019
链接:https://www.jianshu.com/p/8c8c08496a2c
来源:简书

G-API的管线(pipeline:pipeline表示在外接程序与其宿主之间交换数据的管线段的线性通信模型。从宿主端开始,管线具有以下一系列管线段:宿主、外接程序的宿主视图、宿主端适配器、协定、外接程序端适配器、外接程序视图和外接程序。)随之被创建,事实上它是通过调用cv::GMat来完成一系列的G-API数据操作。它只是声明了要去做什么操作,而并不是直接执行什么操作。到此时也还没有进行任何的图像处理。G-API只追踪管线的操作以及其实如何连接的。G-API的数据对象(cv::GMat)是用以连接各种操作的。cv::GMat in则是一个为空的GMat信号,用于告知计算的开始。
然后实例化cv::GComputation这个对象。此对象把输入/输出(input/output)数据当做参数(在本例中依次是in和out这两个cv::GMat对象),并基于in和out的中的数据流来重建调用图。

在某种程度上,cv::GComputation是一个缩减对象,它负责捕捉何种图像处理操作来组成计算,并执行计算。

测试

	Mat readImage = imread("F:\\T1_20210421172407477.tif");
	Mat result;
	//imwrite("",readImage);
	double t1 = (double)getTickCount();
	cvtColor(readImage, result, COLOR_RGB2GRAY);
	blur(result, result, Size(5, 5));
	Canny(result, result, 30, 150, 3);
	double t2 = ((double)getTickCount()-t1)/getTickFrequency()*1000;
	std::cout << "Run Time 1 "<<t2<<" ms\n";

	cv::GMat in;
	cv::GMat gray = cv::gapi::RGB2Gray(in);
	cv::GMat imgBlur = cv::gapi::blur(gray, Size(5, 5));
	cv::GMat out = cv::gapi::Canny(imgBlur, 30, 150, 3);
	cv::GComputation ac(in, out);
	t1 = (double)getTickCount();
	ac.apply(readImage, result);
	t2 = ((double)getTickCount() - t1) / getTickFrequency() * 1000;
	std::cout << "Run Time 2 " << t2 << " ms\n";
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值