opencv学习日记—— threshold&inRange

示例代码:

#include
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学习日记—— threshold&inRange_第1张图片

单通道threshold

opencv学习日记—— threshold&inRange_第2张图片

多通道threshold

opencv学习日记—— threshold&inRange_第3张图片

多通道inRange

opencv学习日记—— threshold&inRange_第4张图片

你可能感兴趣的:(学习日记,学习日记)