opencv提取图像中红色范围,结果一直出错

intmain(intargc,char**argv){IplImage*image=cvLoadImage("C:\\Users\\Public\\Pictures\\... int main(int argc,char **argv)
{
IplImage* image = cvLoadImage("C:\\Users\\Public\\Pictures\\Sample Pictures\\***.jpg");
cvNamedWindow("output",CV_WINDOW_AUTOSIZE);
IplImage* imageHSV =cvCreateImage(cvGetSize(image),image->depth,3);

IplImage* image_11 =cvCreateImage(cvGetSize(image),image->depth,3);
cvCvtColor( image, image_11, CV_RGB2BGR );//BRG 转换到 HSV
cvCvtColor( image_11, imageHSV, CV_BGR2HSV );
IplImage* h_space =cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,1);
IplImage* s_space =cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,1);
IplImage* v_space =cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,1);
cvSplit(imageHSV,h_space,s_space,v_space,NULL);//提取HSV各通道

IplImage* h_s1 =cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,1);//H通道域值化

IplImage* h_s2 =cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,1);
IplImage* h_s3 =cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,1);
IplImage* h_s4 =cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,1);
IplImage* h_s5 =cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,1);
cvThreshold(h_space,h_s1,180,255,CV_THRESH_BINARY_INV);
cvThreshold(h_space,h_s2,160,255,CV_THRESH_BINARY);
cvAnd(h_s1,h_s2,h_s3);
cvAnd(h_s3,h_space,h_s5);

IplImage* hsv =cvCreateImage(cvGetSize(image),image->depth,3);
IplImage* image_1 =cvCreateImage(cvGetSize(image),image->depth,3);
cvMerge(h_s5,h_s5,h_s5,NULL,hsv);
cvCvtColor( hsv,image_1, CV_HSV2BGR );
cvShowImage("output",image_1);

cvWaitKey(0);

cvReleaseImage(&image_1);
cvDestroyWindow("output");
}
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏100(财富值+成长值)
奇奇怪哥
2015-03-05 · 超过17用户采纳过TA的回答
知道答主
回答量:24
采纳率:0%
帮助的人:32万
展开全部
用你的程序跑了下,你这个应该是提取蓝色区域的代码,
提取红色区域我记得是H空间315°~360°和0°~23°
具体代码你自己 按照这个参数再调试下吧
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式