加载中…
个人资料
Canny
Canny
  • 博客等级:
  • 博客积分:0
  • 博客访问:3,544
  • 关注人气:48
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

【转】OpenCV学习:将图像转为二值图像(函数cvtColor和函数threshold)

(2014-04-13 13:37:52)
分类: OpenCV基础
原文地址:http://blog.csdn.net/honpey/article/details/8972583

想换一下CSDN账户的头像,换成自己的真实的头像,但是又不想那么直接,干脆就把头像转换成二值图得了,因为从二值图像是推不出来原图的http://static.blog.csdn.net/xheditor/xheditor_emot/default/smile.gif。这个过程需要OpenCV的两个函数,第一个函数是彩色图像转化为灰度图像:cvtColor函数;下一个函数是由灰度图转化为二值图像函数:threshold函数。用法很简单,代码如下:

  1. cvtColor(img_origin,img_gray,CV_BGR2GRAY);  
  2. threshold(img_gray,img_binary,145,255,THRESH_BINARY);  
  3. imwrite("/home/hon/result.jpg",img_binary);  
  4. imshow("binary image",img_binary);  
    cvtColor(img_origin,img_gray,CV_BGR2GRAY);
    threshold(img_gray,img_binary,145,255,THRESH_BINARY);
    imwrite("/home/hon/result.jpg",img_binary);
    imshow("binary image",img_binary);
既然说到了这两个函数,就说说这两个函数的用法吧。这两个函数都是OpenCV中C++系列的函数,函数没有前缀cv(大部分参考书籍上介绍的OpenCV函数是c系列的,有前缀cv)。

cvtColor函数:

原型:

  1. void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0  
 void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0 )
src和dst分别是待转的图像(src)和待转图像转换后的图像(dst);code是一个掩码,表示由src到dst之间是怎么转的,比如是彩色转为灰度,还是彩色转为HSI模式;最后的dstCn表示dst图像的波段数,这个值默认是0,它可以从参数code中推断。

code的模式包括:

CV_RGB2GRAY:<彩色图像---灰度图像>

CV_BGR2YCrCb, CV_RGB2YCrCb, CV_YCrCb2BGR, CV_YCrCb2RGB      

CV_BGR2HSV, CV_RGB2HSV, CV_HSV2BGR, CV_HSV2RGB        

更多的变换信息可以参考 OpenCV 2.4.5 documentation:http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html#void cvtColor(InputArray src, OutputArray dst, int code, int dstCn)

threshold函数:

原型:

  1. double threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type)  
double threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type)
src和dst分别是待处理的图像(src)和由src生成的二值图像(dst);thresh是阈值,所谓的阈值函数就肯定要有个阈值;maxval在某些模式使用,type就是模式了。

code的模式包括:

 

计算方法
THRESH_BINARY http://docs.opencv.org/_images/math/c43a764bdf8c1513882cf7ee3393325a871bc704.png
THRESH_BINARY_INV http://docs.opencv.org/_images/math/87d295f3c6c0b5316480ec38837af5ec97ca928a.png
THRESH_TRUNC http://docs.opencv.org/_images/math/0f3cd4f2207fe9992e698c2699d7953453934874.png
THRESH_TOZERO http://docs.opencv.org/_images/math/71183c69df0d555b0498c6d42e846f438e47b179.png
THRESH_TOZERO_INV http://docs.opencv.org/_images/math/2c112979b15dafc432c64bd20405ae2b3e64f149.png

参考相关文档:OpenCV 2.4.5 documentation:http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html?highlight=threshold#cv.Threshold

注意:threshold函数针对的是单通道图像,这个一定要注意!

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有