opencv hsv 二值化怎么利用hsv二值化

他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)opencv中什么函数可以直接单独访问HSV的H通道呢 bgr分别对应通道0 1 2 那么HSV呢_百度知道
opencv中什么函数可以直接单独访问HSV的H通道呢 bgr分别对应通道0 1 2 那么HSV呢
我有更好的答案
  【1】先调用cvCvtColor将图像转到HSV颜色空间,如:cvCvtColo(rgb,hsv,CV_BGR2HSV);然后调用cvSplit函数,就可以将H分量分离出来,再来单独访问H分量,H对于的通道是0即可。  【2】HSV(Hue,Saturation,Value)是根据颜色的直观特性由A.R.Smith在1978年创建的一种颜色空间,也称六角锥体模型(HexconeModel)。这个模型中颜色的参数分别是:色调(H),饱和度(S),亮度(V)。
采纳率:80%
来自团队:
然后调用cvSplit函数,hsv,CV_BGR2HSV)先调用cvCvtColor将图像转到HSV颜色空间,如:cvCvtColor(rgb,就可以将H分量分离出来,再来单独访问H分量
sv 分别对应12通道吗
本回答被提问者采纳
为您推荐:
其他类似问题
opencv的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)OpenCV学习笔记(3)之HSV
由于科研需要,看了一点opencv下的HSV方面的知识,利用opencv把RGB图片像HSV颜色空间转变的时候,
H通道的值范围为: 0-180
&HSV颜色模型规定的各通道取值范围为:
H : 0-360 & & S:0-1 & V: 0-1
通过查看opencv的源代码可知,在使用cvtColor()函数,将RGB转换成HSV时,对其进行了归一化,H的值是0-360的。
下面的代码实现了一个HSV颜色盘。
//====================================================================
: lishichao
: HSV颜色盘
//====================================================================
#include &stdafx.h&
#define max(a,b)
(((a)&(b))?(a):(b))
#define min(a,b)
(((a)&(b))?(a):(b))
double module(Point pt)
return sqrt((double)pt.x*pt.x + pt.y*pt.y);
double distance(Point pt1, Point pt2)
int dx = pt1.x - pt2.x;
int dy = pt1.y - pt2.y;
return sqrt((double)dx*dx + dy*dy);
double cross(Point pt1, Point pt2)
return pt1.x*pt2.x + pt1.y*pt2.y;
double angle(Point pt1, Point pt2)
return acos(cross(pt1, pt2) / (module(pt1)*module(pt2) + DBL_EPSILON));
// p和c其中一个是圆心
int inCircle(Point p, Point c, int r)
int dx = p.x - c.x;
int dy = p.y - c.y;
return dx*dx + dy*dy &= r*r ? 1 : 0;
//画出hsv圆盘
void createPlate(Mat &im1, int radius)
Mat hsvImag(Size(radius && 1, radius && 1), CV_8UC3, Scalar(0, 0, 255));
int w = hsvImag.
int h = hsvImag.
int cx = w && 1;
int cy = h && 1;
Point pt1(cx, 0);
for (int j = 0; j & j++)
//uchar* data = hsvImag.ptr&uchar&(j);
for (int i = 0; i & i++)
Point pt2(j - cx, i - cy);
if (inCircle(Point(0, 0), pt2, radius))
int theta = angle(pt1, pt2) * 180 / CV_PI;
if (i & cx)
theta = -theta + 360;
//cout && theta && ' ' && module(pt2) / cx * 255 &&
//data[i * 3 + 0] = theta / 2;
//////data[i * 3 + 1] = module(pt2) / cx * 255;
//data[i * 3 + 2] = 255;
hsvImag.at&Vec3b&(i, j)[0] = theta / 2;
hsvImag.at&Vec3b&(i, j)[1] = module(pt2) / cx * 255;
hsvImag.at&Vec3b&(i, j)[2] = 255;
cvtColor(hsvImag, im1, CV_HSV2BGR);
int main()
int radius = 255;
createPlate(img, radius);
namedWindow(&img&);
imshow(&img&, img);
waitKey(0);
看过本文的人也看了:
我要留言技术领域:
取消收藏确定要取消收藏吗?
删除图谱提示你保存在该图谱下的知识内容也会被删除,建议你先将内容移到其他图谱中。你确定要删除知识图谱及其内容吗?
删除节点提示无法删除该知识节点,因该节点下仍保存有相关知识内容!
删除节点提示你确定要删除该知识节点吗?opencv2.4.7中如何提取HSV空间中的S分量_百度知道
opencv2.4.7中如何提取HSV空间中的S分量
我有更好的答案
(C++接口)split函数可以把三通道矩阵分割成三个单通道矩阵,这样就可以拿到S分量了。
采纳率:77%
来自团队:
同理s也能输出
为您推荐:
其他类似问题
您可能关注的内容
hsv的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 opencv hsv 取值范围 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信