OpenCV學習心得(4) -- 色彩空間的轉

原创 2012年03月21日 19:05:45

轉載請注明出處與作者

OpenCV提供了一個函數cv::cvtColor可以進行色彩空間的轉換. 提供了將近100種的類型轉換.

例如CV_BGR2HLS,CV_RGB2HLS,CV_HLS2RGB等等...

void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0 )

這個函數可以進行不同色彩空間的轉換.

第三個參數code是轉換類型,使用預定義的宏,格式類似于CV_源空間格式2新空間格式.

第四個參數dstCn是轉換后的channel數.默認情況下是0,即根據源格式和新格式自動確定.


我們這個類中只封裝了幾個類型,最常用的就是ToGray函數,將彩色圖像轉換為單channel的灰度圖.

如果需要可以自行封裝.

注意:一般情況下cv::Mat中存儲的格式為BGR格式.

public: //色彩空間變換//注意默認情況下Mat中存儲的格式為BGR.
	//一下函數均是從BGR格式轉換到其他格式(invert為true時是從其他格式轉換為BGR格式)
	//如果源格式非BGR(或反向轉換的目的格式不是BGR)請使用ConvertColor函數進行轉換.
	bool ToGray(int invert=false);
	bool ToXYZ(int invert=false);
    bool ToYCrCb(int invert=false);
	bool ToHSV(int invert=false);
	bool ToLab(int invert=false);
	bool ToHLS(int invert=false);
	//!色彩空間變換.type為變換類型,使用CV_<src color type>2<dest colot type>格式,例如 CV_RGB2HSV
	bool ConvertColor(int type);

bool COpenCVImage::ToGray(int invert)
{
	cv::Mat m;
	if(invert) cv::cvtColor(m_src,m,CV_GRAY2BGR);
	else cv::cvtColor(m_src,m,CV_BGR2GRAY);
	m_src=m;
    m_modifyed_for_draw=true;
	return true;
}
bool COpenCVImage::ToXYZ(int invert)
{
	cv::Mat m;
	if(invert) cv::cvtColor(m_src,m,CV_XYZ2BGR);
	else cv::cvtColor(m_src,m,CV_BGR2XYZ);
	m_src=m;
    m_modifyed_for_draw=true;
	return true;
}
bool COpenCVImage::ToYCrCb(int invert)
{
	cv::Mat m;
	if(invert) cv::cvtColor(m_src,m,CV_YCrCb2BGR);
	else cv::cvtColor(m_src,m,CV_BGR2YCrCb);
	m_src=m;
    m_modifyed_for_draw=true;
	return true;
}
bool COpenCVImage::ToHSV(int invert)
{
	cv::Mat m;
	if(invert) cv::cvtColor(m_src,m,CV_HSV2BGR);
	else cv::cvtColor(m_src,m,CV_BGR2HSV);
	m_src=m;
    m_modifyed_for_draw=true;
	return true;
}

bool COpenCVImage::ToLab(int invert)
{
	cv::Mat m;
	if(invert) cv::cvtColor(m_src,m,CV_Lab2BGR);
	else cv::cvtColor(m_src,m,CV_BGR2Lab);
	m_src=m;
    m_modifyed_for_draw=true;
	return true;
}

bool COpenCVImage::ToHLS(int invert)
{
	cv::Mat m;
	if(invert) cv::cvtColor(m_src,m,CV_HLS2BGR);
	else cv::cvtColor(m_src,m,CV_BGR2HLS);
	m_src=m;
    m_modifyed_for_draw=true;
	return true;
}


OpenCV學習心得

一直研究Halcon,最近得到新的任務是學習OpenCV.。       OpenCV算是從8月1日開始接觸的吧。       由於有點圖像處理的基礎知識和Halcon 軟件的操作經驗,所以對學習軟件...
  • xflangel
  • xflangel
  • 2013年08月23日 16:43
  • 461

自強不息,學習學習再學習

想起大學時印象很深的的一條循環語句 for (i=0,i ...... 現在,繼續這樣調動自己的學習興趣,不知道這樣寫出來能否運行呢? ...... DATA DIVISION. WORK...
  • rigolo
  • rigolo
  • 2012年06月09日 14:23
  • 138

色彩空間轉換(cvtColor)

OpenCV的cvtColor()讓影像在不同色彩空間之中轉換,由於OpenCV從外界讀入圖檔時,比如使用imread()讀取JPEG檔時,Mat內存為BGR而不是RGB格式,所以輸入參數通常使用CV...
  • Liuqz2009
  • Liuqz2009
  • 2017年03月07日 14:33
  • 109

OpenCV Tutorial: 色彩空間轉換(cvtColor)

色彩空間轉換(cvtColor) OpenCV的cvtColor()讓影像在不同色彩空間之中轉換,由於OpenCV從外界讀入圖檔時,比如使用imread()讀取JPEG檔時,Mat內存為BGR而不是...
  • zg260
  • zg260
  • 2016年10月29日 10:13
  • 188

不学习的日子感觉很的空虚

真的是两天不学习就会感到很空虚啊! 七期的哥哥姐姐都毕业了,八期也有十几个毕业生,所以这次的假期长了一点。我们是从20号到26号一共七天。因为已经毕业一年了,所以这次放假没什么事,主要就是回...
  • liushuijinger
  • liushuijinger
  • 2012年06月27日 07:29
  • 6049

轉載(學習網站)

http://www.gotapi.com/ 语言:英语 简介:HTML,CSS,XPATH,XSL,JAVASCRIPT等API的查询网站。http://www.w3schools.com/ 语言:...
  • kexijun20014
  • kexijun20014
  • 2009年08月12日 12:18
  • 221

JSF學習心得

 以前用過Struts,感覺使用request.getParameter,以及ActionForm,DynaForm挺麻煩的,後來接觸到JSF.發現這個東東還不錯的.不過,單純使用SUN RI或者My...
  • weaponofpower
  • weaponofpower
  • 2007年03月21日 21:04
  • 505

xml學習心得

 第一部分                    ----基本信息1、 如何顯示xml中的信息,運用xsl:具體如何實現如下:protected System.Web.UI.WebControls...
  • freeliver54
  • freeliver54
  • 2006年04月11日 21:05
  • 2366

【转贴】关于Perl--Perl学习手札

http://perl.hcchien.org/ch01.html1. 關於Perl當你翻開這本書的時候,你也就進入了一個奇幻的世界。Perl確實是一種非常吸引人的程式語言,而之所以這麼引人入勝的原因...
  • heart5
  • heart5
  • 2005年02月01日 23:58
  • 1192

Python学习第一天

python学习第一天 为了督促自己,零零散散的记下学习笔记~~ 1、Pyhon3.X版本之后print "Hello world"更改为print ("Hello world"),语法略有变化,...
  • njdis
  • njdis
  • 2014年01月06日 20:47
  • 390
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OpenCV學習心得(4) -- 色彩空間的轉
举报原因:
原因补充:

(最多只允许输入30个字)