欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

opencv学习日记——3` threshold&inRange

程序员文章站 2022-04-10 23:26:49
...

示例代码:

#include<opencv.hpp>
using namespace cv;

int main()
{
	Mat src = imread("1.jpg");
	Mat dst1,dst2,dst3;
	cvtColor(src, dst1, COLOR_BGR2GRAY);
	threshold(src, dst2, 80, 255, THRESH_BINARY);
	threshold(dst1, dst1, 80, 255, THRESH_BINARY);
	inRange(src, Scalar(30, 30, 100), Scalar(200, 200, 255), dst3);
	imwrite("1p.jpg", dst1);
	imwrite("2p.jpg", dst2);
	imwrite("3p.jpg", dst3);
	imshow("dst1",dst1);
	imshow("dst2",dst2);
	imshow("dst3",dst3);
	waitKey(0);
	return 0;
}

代码分析:

threhold()和inRange()都为用于阈值化的函数。

threshold() 第一个参数为原图,第二个为阈值化后的图,第三个为阈值,第四个为最大值,第五个为函数的类型参数,当其为THRESH_BINARY时,若原图为单通道图,则大于阈值的像素变为max,小于阈值变为0;若原图为多通道,每个通道同理。
inRange() 第一个参数为原图,第二个参数为下限,第三个参数为上限,第四个参数为阈值化后的图,在上下限之间的像素变为255,之外的所有像素变为0。

原图

opencv学习日记——3` threshold&inRange

单通道threshold

opencv学习日记——3` threshold&inRange

多通道threshold

opencv学习日记——3` threshold&inRange

多通道inRange

opencv学习日记——3` threshold&inRange

相关标签: 学习日记