opencv2学习 ,读取图片,rgb2 lab
2014-09-23 19:15
323 查看
利用mat读取图片,显示其方式,学习了潜莫大师的课程
#include <opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> using namespace cv;
Mat image0=imread("dota.jpg",CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);//载入最真实的图像 ge1=imread("dota.jpg",0);//载入灰度图 Mat image2=imread("dota.jpg",199);//载入3通道的彩色图像 Mat logo=imread("dota_logo.jpg");//载入3通道的彩色图像
</pre><pre name="code" class="cpp">Mat girl=imread("*.jpg"); //载入图像到Mat namedWindow("你好"); //创建一个名为 "【1】动漫图"的窗口 imshow("你好",girl);/ imwrite("*.jpg",girl);存储图片到当前目录
<pre name="code" class="cpp">//定义一个Mat类型,用于存放,图像的ROI Mat imageROI; //方法一 imageROI=image(Rect(800,350,logo.cols,logo.rows)); //方法二 //imageROI=image(Range(350,350+logo.rows),Range(800,800+logo.cols)); //将logo加到原图上 addWeighted(imageROI,0.5,logo,0.3,0.,imageROI); //显示结果 namedWindow("【4】原画+logo图"); imshow("【4】原画+logo图",image);下面写一个RGB转换成Lab的函数,用的很好,可以参考一下
void CRGBToLabDlg::OnOK() { rgb2lab(36,79,156,L,A,B); CString str; str.Format("%f,%f,%f",L,A,B); AfxMessageBox(str);}void CRGBToLabDlg::rgb2lab(double R, double G, double B, double &Lab_L, double &Lab_a, double &Lab_b){ double X, Y, Z; double r = R / 255.000; // rgb range: 0 ~ 1 double g = G / 255.000; double b = B / 255.000; // gamma 2.2 if ( r > 0.04045 ) r = pow(( r + 0.055 ) / 1.055, 2.4); else r = r / 12.92; if ( g > 0.04045 ) g = pow(( g + 0.055 ) / 1.055, 2.4); else g = g / 12.92; if ( b > 0.04045 ) b = pow(( b + 0.055 ) / 1.055, 2.4); else b = b / 12.92; // sRGB X = r * 0.436052025 + g * 0.385081593 + b * 0.143087414; Y = r * 0.222491598 + g * 0.716886060 + b * 0.060621486; Z = r * 0.013929122 + g * 0.097097002 + b * 0.714185470; // XYZ range: 0~100 X = X * 100.000; Y = Y * 100.000; Z = Z * 100.000; // Reference White Point double ref_X = 96.4221; double ref_Y = 100.000; double ref_Z = 82.5211; X = X / ref_X; Y = Y / ref_Y; Z = Z / ref_Z; // Lab if (X > 0.008856) X = pow(X, 1/3.000); else X = ( 7.787 * X ) + ( 16 / 116.000 ); if (Y > 0.008856) Y = pow(Y, 1/3.000); else Y = ( 7.787 * Y ) + ( 16 / 116.000 ); if (Z > 0.008856) Z = pow(Z, 1/3.000); else Z = ( 7.787 * Z ) + ( 16 / 116.000 ); Lab_L = ( 116.000 * Y ) - 16.000; Lab_a = 500.000 * ( X - Y ); Lab_b = 200.000 * ( Y - Z );}
相关文章推荐
- Opencv读取文件夹连续图片,RGB分量显示,图像灰度化
- OpenCV读取的图片从BGR转换为RGB
- 【OpenCV学习笔记】【编程实例】一(VS2010/MFC+OPenCV2.4.7读取图片和摄像头)
- 【Matlab图像处理】学习笔记:读取16进制RGB文档转为彩色图片
- OpenCV3.0学习(二)——图片的读取、显示与保存
- OpenCV学习(一):图片的读取显示以及鼠标点击事件的设置
- OpenCV学习笔记(一):读取、显示、保存图片
- 利用Opencv读取图片RGB值并存储在txt文件中
- 利用Opencv读取图片RGB值并存储在txt文件中
- OpenCV学习笔记2-读取图片
- OpenCV学习五:图片矩形区域的读取
- OpenCV学习之旅——图片批量读取操作
- python 使用opencv接口读取RGB图片出错解决
- Opencv读取文件夹连续图片,RGB分量显示,图像灰度化
- opencv学习心得二----读取图片
- Opencv读取文件夹连续图片,RGB分量显示,图像灰度化
- OpenCV中读取RGB格式图像转成HSV格式图像显示
- 【OpenCV学习笔记5】读取图像中任意点的像素值
- OpenCV学习笔记---- 挨个读取图像文件夹下的所有文件,进行样本训练
- 利用opencv读取图片将其作为opengl的纹理图片的实现方法