在OpenCV中,cvInRange
是一个用于在颜色空间中根据设定的上下界范围进行颜色过滤的函数。该函数通常用于图像处理和计算机视觉应用,特别是在处理彩色图像时。
函数原型如下:
void cvInRange(const CvArr* src, const CvScalar lower, const CvScalar upper, CvArr* dst);
其中:
src
:输入图像或图像数组。lower
:包含最低颜色界限的CvScalar
。upper
:包含最高颜色界限的CvScalar
。dst
:输出图像或图像数组,表示满足颜色范围条件的像素。
这个函数的作用是将输入图像的每个像素与上下界进行比较,如果像素的颜色数值在上下界之间,则该像素保留在输出图像中,否则被设为零或其他指定的值。
program cv_InRangeS;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils,
ocv.highgui_c,
ocv.core_c,
ocv.core.types_c,
ocv.imgproc_c,
ocv.imgproc.types_c,
uResourcePaths;
const
filename = cResourceMedia + 'cat2.jpg';
var
src: pIplImage = nil;
dst: pIplImage = nil;
dst2: pIplImage = nil;
begin
try
src := cvLoadImage(filename, CV_LOAD_IMAGE_GRAYSCALE);
WriteLn(Format('[i] image: %s', [filename]));
cvNamedWindow('original', CV_WINDOW_AUTOSIZE);
cvShowImage('original', src);
dst := cvCreateImage(cvSize(src^.width, src^.height), IPL_DEPTH_8U, 1);
// 检查一个数组的元素的值是否在另外两个标量的范围内
cvInRangeS(src, cvScalar(50), cvScalar(255), dst);
cvNamedWindow('cvInRangeS', CV_WINDOW_AUTOSIZE);
cvShowImage('cvInRangeS', dst);
cvWaitKey(0);
cvReleaseImage(src);
cvReleaseImage(dst);
cvDestroyAllWindows();
except
on E: Exception do
WriteLn(E.ClassName, ': ', E.Message);
end;
end.