天天看點

OpenCV問題解決整理将3通道的圖檔轉換為4通道參考文獻

目錄

将3通道的圖檔轉換為4通道

描述

解決

參考文獻

将3通道的圖檔轉換為4通道

描述

有時需要将RGB格式的圖檔轉換為RGBA格式的圖檔

解決

如果A通道是複制B通道的值,可以采用下面的代碼

cv::Mat newSrc(source.size(), CV_MAKE_TYPE(source.depth(), 4));
int from_to[] = { 0,0, 1,1, 2,2, 2,3 };
cv::mixChannels(&source,1,&newSrc,1,from_to,4);
           

如果A通道需要自定義,則可以采用下面的代碼

int addAlpha(cv::Mat& src, cv::Mat& dst, cv::Mat& alpha)
{
	if (src.channels() == 4)
	{
		return -1;
	}
	else if (src.channels() == 1)
	{
		cv::cvtColor(src, src, cv::COLOR_GRAY2RGB);
	}
	
	dst = cv::Mat(src.rows, src.cols, CV_8UC4);
 
	std::vector<cv::Mat> srcChannels;
	std::vector<cv::Mat> dstChannels;
	//分離通道
	cv::split(src, srcChannels);
 
	dstChannels.push_back(srcChannels[0]);
	dstChannels.push_back(srcChannels[1]);
	dstChannels.push_back(srcChannels[2]);
	//添加透明度通道
	dstChannels.push_back(alpha);
	//合并通道
	cv::merge(dstChannels, dst);
 
	return 0;
           

參考文獻

OpenCV: transforming 3 channel image into 4 channel

【OpenCV3】如何給圖像添加(不)透明度通道

繼續閱讀