用Opencv和C++实现将一幅图片从RGB空间转换到YUV空间。
VS2015+Opencv2.4.13
注:博主小白,代码是网上摘抄合并重组来的,侵权删除,谢谢!
【函数介绍】
cvCvtColor(const CvArr* src, CvArr* dst, int code)函数是Opencv里的颜色空间转换函数,可以实现RGB颜色向HSV,HSI,YUV等颜色空间的转换,也可以转换为灰度图像。
src是输入的8-bit,16-bit或32-bit单倍精度浮点数影像;
dst是输出的8-bit,16-bit或32-bit单倍精度浮点数影像;
code是色彩空间转换的模式,CV_BGR2GRAY是RGB到灰度图像,CV_GRAY2BGR是灰度图到RGB,CV_BGR2HSV将图片从RGB空间转换为HSV空间。其中当code选用CV_BGR2GRAY时,dst需要是单通道图片。当code选用CV_BGR2HSV时,对于8位图,需要将rgb值归一化到0-1之间。这样得到HSV图中的H范围才是0-360,S和V的范围是0-1。
【完整代码】
#include <opencv.hpp>
using namespace cv;int main()
{
IplImage *src = cvLoadImage("Lena.jpg", 1);//原图
IplImage *dst_gray = cvCreateIma