cvInRangs()函数

本文介绍了一款小程序,用于将输入图片转换为HSV色域,并通过滑动条设置H、S、V三个元素的不同范围来动态生成掩膜板,展示HSV色域在图像处理中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cvInRangs()主要是将图像中不满足范围条件的像素区域筛除。

借鉴了一个小程序。

#include "stdafx.h"

//#include "cv.h"
#include "highgui.h"
#include "opencv2\opencv.hpp"
#include <ctype.h>
#include <stdio.h>
#include <iostream>
using namespace cv;


int main()
{
printf("此程序将输入的图片由一般的RGB色系转化为HSV色系,然后对图片取掩膜板,\
可以对掩膜板的H、S、V三个元素取不同的范围进行测试并查看, \
效果,拖动滑动条即可选择范围!按 q 键退出测试!\n\n");

int hmax=0,hmin=0,vmin=0,vmax=0,smin=0,smax=0;
if(argc<=1)
{
std::cout<<"Error:Please Load a picture!"<<std::endl;
return 0;
}


IplImage *tempImg,*hsv,*mask;
//创建窗口
cvNamedWindow("image",CV_WINDOW_AUTOSIZE);
cvNamedWindow("hsv",CV_WINDOW_AUTOSIZE);
cvNamedWindow("mask",CV_WINDOW_AUTOSIZE);
cvNamedWindow("Track",CV_WINDOW_AUTOSIZE);


cvCreateTrackbar("Hmin","Track",&hmin,256,0);
cvCreateTrackbar("Hmax","Track",&hmax,256,0);
cvCreateTrackbar("Smin","Track",&smin,256,0);
cvCreateTrackbar("Smax","Track",&smax,256,0);
cvCreateTrackbar("Vmin","Track",&vmin,256,0);
cvCreateTrackbar("Vmax","Track",&vmax,256,0);



//分配图像空间

CvSize ImgSize = {512, 512};
IplImage* image = cvCreateImage(ImgSize,IPL_DEPTH_8U,3);
tempImg=cvLoadImage("c:\\sourcePictures\\XX2.jpg");
    cvResize(tempImg, image);
hsv=cvCreateImage(cvGetSize(image),8,3);
mask=cvCreateImage(cvGetSize(image),8,1);
//将RGB转化为HSV色系
cvCvtColor(image,hsv,CV_RGB2BGR);
cvShowImage("image",image);
cvShowImage("hsv",hsv);
int _hmax=0,_hmin=0,_vmin=0,_vmax=0,_smin=0,_smax=0,flag=0;
while(flag!='q')
{
_hmax=hmax,_hmin=hmin,_vmin=vmin,_vmax=vmax,_smin=smin,_smax=smax;
//制作掩膜板
cvInRangeS(hsv,cvScalar(MIN(_hmax,_hmin),MIN(_smax,_smin),MIN(_vmax,_vmin),0),
cvScalar(MAX(_hmax,_hmin),MAX(_smax,_smin),MAX(_vmax,_vmin),0),mask);


//显示图像
cvShowImage("mask",mask);
flag=cvWaitKey(40);
}


cvDestroyAllWindows();
cvReleaseImage(&image);
cvReleaseImage(&hsv);
cvReleaseImage(&mask);
system("pause");
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值