1.RGBA色彩空间基本知识:
RGBA
stands for
R
ed
G
reen
B
lue
A
lpha.
While it is sometimes described as a color space, it is actually simply
a use of the RGB color model, with extra information. The color is
RGB
, and may belong to any RGB color space, but an integral alpha value as invented by
Catmull
and
Smith
between
1971
and
1972
enables
alpha blending
and
alpha compositing
. The inventors named
alpha
after the Greek letter in the classic
linear interpolation
formula αA + (1-α)B.
The
alpha channel
is normally used as an opacity channel. If a pixel has a value of 0% in its alpha channel, it is fully
transparent
(and, thus, invisible), whereas a value of 100% in the alpha channel
gives a fully opaque pixel (traditional digital images). Values between
0% and 100% make it possible for pixels to show through a background
like a glass (translucency), an effect not possible with simple binary
(transparent or opaque) transparency. It allows easy
image compositing
. Alpha channel values can be expressed as a percentage, integer, or real number between 0 and 1 like RGB parameters.
Sometimes this is referred as
ARGB
(like RGBA, but first datum is alpha), which is used, for example, in
Macromedia
products terminology. For example, 0x80FFFF00 is 50%-transparent
yellow, because all parameters are expressed on a 0-to-255 scale. 0x80
is 128, approximately half 255 (alpha 50%); 0xFF is 255, the greatest
value a parameter can have (pure red); the second 0xFF is like the
previous, but for green; and 0x00 is 0 in decimal (no blue). Red,
green, and half transparency mixture are 50% transparent yellow.
PNG
is an image format that uses RGBA.
说白了就是一个像素透明度的位。
2.实例:
#include <iostream>
#include <cv.h>
#include <highgui.h>
char *filename="sample.png";
IplImage *cvLoadImageBGRA(const char *filename,int iscolor = 1);
IplImage *GetMaskFromBGR(IplImage *BGRImg); //取得图像掩码
int main(int argc, char **argv)
IplImage *imgBGRA = cvLoadImageBGRA(filename,CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
if(imgBGRA == NULL )
std::cerr << "Can't Load Image/n";
return -1;
cvNamedWindow("RGBA",CV_WINDOW_AUTOSIZE);
cvShowImage("RGBA",imgBGRA);
cvReleaseImage( & imgBGRA);
cvWaitKey(0);
cvDestroyAllWindows();
return EXIT_SUCCESS;
IplImage *cvLoadImageBGRA(const char *filename,int iscolor)
//RGB
IplImage *ImgBGR = cvLoadImage(filename,iscolor);
if(ImgBGR == NULL)
return NULL;
//创建图像掩码
IplImage *Mask = GetMaskFromBGR(ImgBGR);
if(Mask == NULL)
cvReleaseImage(&ImgBGR);
return NULL;
IplImage *BGRA = cvCreateImage(cvGetSize(ImgBGR),IPL_DEPTH_8U,4);
if(BGRA == NULL)
cvReleaseImage(&ImgBGR);
cvReleaseImage(&Mask);
return NULL;
const CvArr *InputPlane[2]={ImgBGR,Mask};
int from_to[] = { 0, 2, 1, 1, 2, 0, 3, 3 };//设定对应的BGRA
cvMixChannels(InputPlane,2,(CvArr**)&BGRA,1,from_to,4);
cvReleaseImage(&Mask);
cvReleaseImage(&ImgBGR);
return BGRA;
IplImage *GetMaskFromBGR(IplImage *BGRImg)
//灰度单通道
IplImage *gray = cvCreateImage(cvGetSize(BGRImg),IPL_DEPTH_8U,1);
if(gray == NULL){return NULL;}
//创建灰度图像
cvCvtColor(BGRImg, gray, CV_BGR2GRAY);
//创建图像掩码
cvThreshold(gray,gray,254,255,CV_THRESH_BINARY);
cvNot(gray,gray);
return gray;
本文转自gnuhpc博客园博客,原文链接:http://www.cnblogs.com/gnuhpc/archive/2012/10/13/2722918.html,如需转载请自行联系原作者
学习Opencv库(一)——基本读写函数的介绍!
OpenCV是一个开源的计算机视觉库,里面封装了很多图像处理方面的优秀算法:例如图片轮廓边缘检测,特征点提取…,可以在Windows,Linux,Mac等平台使用;虽然OpenCv是用 C++ 编写的,并且现在主要接口也是 C++ 语言的但,现在该库也同时提供大量面向 python、matlab以及Java。
带你读《OpenCV 4计算机视觉项目实战 (原书第2版)》之三:学习图形用户界面
本书首先介绍OpenCV的入门知识及安装,然后介绍OpenCV的基础知识,包括用户界面、矩阵运算、滤波器和直方图等,之后介绍复杂的计算机视觉算法,包括对象分割和分类、视频监控、对象跟踪等,后探讨对象跟踪、文本识别、机器学习和人脸检测等高级技术。阅读本书之后,你将掌握常用和新的计算机视觉技术,并学会从零开始构建各类OpenCV项目。