【OpenCV3】cv::divide()使用详解

cv::divide()是一个简单的除法函数,有以下两种用法:

用法1:

void cv::divide(
	cv::InputArray src1, // 输入数组1 (分子)
	cv::InputArray src2, // 输入数组1 (分母)
	cv::OutputArray dst, // 输出数组 (scale*src1/src2)
	double scale = 1.0, // 乘数因子
	int dtype = -1 // 输出数组类型, -1表示与src2相同。
);

用法2:

void cv::divide(
	double scale, // 所有分子的分母
	cv::InputArray src2, // 输入数组 (denominators)
	cv::OutputArray dst, // 输出数组 (scale/src2)
	int dtype = -1 // 输出数组类型, -1表示与src2相同。
);

下面通过两个具体的例子来分别看两种用法的计算效果:

用法1:

	cv::Mat img0 = cv::imread("img_0.jpg", -1);
	cv::Mat img1 = cv::imread("img_1.jpg", -1);

	if (img0.empty())
	{
		std::cout << "load img0 failed!\n" << std::endl;
		return -1;
	}

	if (img1.empty())
	{
		std::cout << "load img1 failed!\n" << std::endl;
		return -1;
	}

	cv::Mat img2;
	cv::divide(img0, img1, img2, 50, -1);

	cv::imshow("img0", img0);
	cv::imshow("img1", img1);
	cv::imshow("img2", img2);

	cv::waitKey(0);
	return 0;

结果如下:

用法2:

	cv::Mat img0 = cv::imread("img_1.jpg", -1);

	if (img0.empty())
	{
		std::cout << "load img0 failed!\n" << std::endl;
		return -1;
	}

	cv::Mat img1;
	cv::divide(5000, img0, img1, -1);

	cv::imshow("img0", img0);
	cv::imshow("img1", img1);

	cv::waitKey(0);
	return 0;

结果如下:

猜你喜欢

转载自blog.csdn.net/guduruyu/article/details/81606062