想换一下CSDN账户的头像,换成自己的真实的头像,但是又不想那么直接,干脆就把头像转换成二值图得了,因为从二值图像是推不出来原图的。这个过程需要OpenCV的两个函数,第一个函数是彩色图像转化为灰度图像:cvtColor函数;下一个函数是由灰度图转化为二值图像函数:threshold函数。用法很简单,代码如下:
- 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);
cvtColor函数:
原型:
- void
cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0 )
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函数:
原型:
- double
threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type)
code的模式包括:
值 | 计算方法 |
THRESH_BINARY | |
THRESH_BINARY_INV | |
THRESH_TRUNC | |
THRESH_TOZERO | |
THRESH_TOZERO_INV |
参考相关文档:OpenCV 2.4.5 documentation: http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html?highlight=threshold#cv.Threshold
注意:threshold函数针对的是单通道图像,这个一定要注意!