标签:des style blog http color 使用 os strong
创建头并分配数据
IplImage* cvCreateImage( CvSize size, int depth, int channels );
size
图像宽、高.
depth
图像元素的位深度,可以是下面的其中之一:
IPL_DEPTH_8U - 无符号8位整型
IPL_DEPTH_8S - 有符号8位整型
IPL_DEPTH_16U - 无符号16位整型
IPL_DEPTH_16S - 有符号16位整型
IPL_DEPTH_32S - 有符号32位整型
IPL_DEPTH_32F - 单精度浮点数
IPL_DEPTH_64F - 双精度浮点数
channels
每个元素(像素)的颜色通道数量.可以是 1, 2, 3 或 4.通道是交叉存取的,例如通常的彩色图像数据排列是:
b0 g0 r0 b1 g1 r1 ...
虽然通常 IPL 图象格式可以存贮非交叉存取的图像,并且一些OpenCV 也能处理他, 但是这个函数只能创建交叉存取图像.
函数 cvCreateImage 创建头并分配数据,这个函数是下列的缩写型式
header = cvCreateImageHeader(size,depth,channels);
cvCreateData(header); //只是创建空间,并不会初始化空间内的数据
拷贝一个数组给另一个数组
void cvCopy( const CvArr* src, CvArr* dst, const CvArr* mask=NULL );
src
输入数组。
dst
输出数组。
mask
操作掩码是8比特单通道的数组,它指定了输出数组中被改变的元素。
函数cvCopy从输入数组中复制选定的成分到输出数组:
如果mask(I)!=0,则dst(I)=src(I)。
如果输入输出数组中的一个是IplImage类型的话,其ROI和COI将被使用。输入输出数组必须是同样的类型、维数和大小。函数也可以用来复制散列数组(这种情况下不支持mask)。
保存图像到文件
int cvSaveImage( const char* filename, const CvArr* image );
filename
文件名。
image
要保存的图像。
函数cvSaveImage保存图像到指定文件。图像格式的的选择依赖于filename的扩展名,请参考cvLoadImage。只有8位单通道或者3通道(通道顺序为‘BGR‘ )可以使用这个函数保存。如果格式,深度或者通道不符合要求,请先用cvCvtScale 和cvCvtColor转换;或者使用通用的cvSave保存图像为XML或者YAML格式。
从文件中读取图像
#define CV_LOAD_IMAGE_UNCHANGED -1
#define CV_LOAD_IMAGE_GRAYSCALE 0
#define CV_LOAD_IMAGE_COLOR 1
#define CV_LOAD_IMAGE_ANYDEPTH 2
#define CV_LOAD_IMAGE_ANYCOLOR 4
IplImage* cvLoadImage( const char* filename, int flags=CV_LOAD_IMAGE_COLOR );
filename
要被读入的文件的文件名。
flags
指定读入图像的颜色和深度:
指定的颜色可以将输入的图片转为3信道(CV_LOAD_IMAGE_COLOR), 单信道 (CV_LOAD_IMAGE_GRAYSCALE), 或者保持不变(CV_LOAD_IMAGE_ANYCOLOR)。
深度指定输入的图像是否转为每个颜色信道每象素8位,(OpenCV的早期版本一样),或者同输入的图像一样保持不变。
选中CV_LOAD_IMAGE_ANYDEPTH,则输入图像格式可以为8位无符号,16位无符号,32位有符号或者32位浮点型。
如果输入有冲突的标志,将采用较小的数字值。比如CV_LOAD_IMAGE_COLOR | CV_LOAD_IMAGE_ANYCOLOR 将载入3信道图。CV_LOAD_IMAGE_ANYCOLOR和CV_LOAD_IMAGE_UNCHANGED是等值的。但是, CV_LOAD_IMAGE_ANYCOLOR有着可以和CV_LOAD_IMAGE_ANYDEPTH同时使用的优点,所以 CV_LOAD_IMAGE_UNCHANGED不再使用了。
如果想要载入最真实的图像,选择CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR。
函数cvLoadImage从指定文件读入图像,返回读入图像的指针。目前支持如下文件格式:
Windows位图文件 - BMP, DIB;
JPEG文件 - JPEG, JPG, JPE;
便携式网络图片 - PNG;
便携式图像格式 - PBM,PGM,PPM;
Sun rasters - SR,RAS;
TIFF文件 - TIFF,TIF;
OpenEXR HDR 图片 - EXR;
JPEG 2000 图片- jp2。
创建窗口
int cvNamedWindow( const char* name, int flags=CV_WINDOW_AUTOSIZE );
name
窗口的名字,它被用来区分不同的窗口,并被显示为窗口标题。
flags
窗口属性标志。目前唯一支持的标志是CV_WINDOW_AUTOSIZE。当这个标志被设置后,用户不能手动改变窗口大小,窗口大小会自动调整以适合被显示图像(参考cvShowImage)。
函数cvNamedWindow创建一个可以放置图像和trackbar的窗口。被创建的窗口可以通过它们的名字被引用。
如果已经存在这个名字的窗口,这个函数将不做任何事情。
在指定窗口中显示图像
void cvShowImage( const char* name, const CvArr* image );
name
窗口的名字。
image
被显示的图像。
函数cvShowImage 在指定窗口中显示图像。如果窗口创建的时候被设定标志CV_WINDOW_AUTOSIZE,那么图像将以原始尺寸显示;否则,图像将被伸缩以适合窗口大小。
销毁一个窗口
void cvDestroyWindow( const char* name );
name
要被销毁的窗口的名字。
函数cvDestroyWindow销毁指定名字的窗口。
等待按键事件
int cvWaitKey( int delay=0 );
delay
延迟的毫秒数。
函数cvWaitKey无限制的等待按键事件(delay<=0时);或者延迟"delay"毫秒。返回值为被按键的值,如果超过指定时间则返回-1。
注释:这个函数是HighGUI中唯一能够获取和操作事件的函数,所以在一般的事件处理中,它需要周期地被调用,除非HighGUI被用在某些能够处理事件的环境中。
译者注:比如在MFC环境下,这个函数不起作用。
释放头和图像数据
void cvReleaseImage( IplImage** image );
image
双指针指向图像内存分配单元。
函数 cvReleaseImage 释放头和图像数据,相似于:
if( *image )
{
cvReleaseData( *image );
cvReleaseImageHeader( image );
}
设置或得到感兴趣区域ROI
void cvSetImageROI(IplImage* image,CvRect rect); void cvResetImageROI(IplImage* image); CvRect cvGetImageROI(const IplImage* image);
设置和得到感兴趣通道的COI
void cvSetImageCOI(IplImage* image,int coi); int cvGetImageCOI(const IplImage* image);
IplImage* cvLoadImage(fileName,int flag); flag>0,载入图像强制为3通道彩色图像 flag=0,载入图像强制为单通道灰度图像 flag<0,载入图像由文件中的通道数决定 int cvSaveImage(fileName,const CvArr* img); 保存图像的格式由fileName的后缀名决定 如果保存成功返回非零数
访问图像元素
(访问图像第k通道,第i行,第j列的像素值,k[0,通道总数-1],i[0,height-1],j[0,width-1])
图像转换
绘制命令
#include "cv.h"
#include "highgui.h"
#include "stdio.h"
void main(void)
{
IplImage* pImg; //声明IplImage指针
char* filename = "E:\学习\OpenCV\picture\Lena.jpg"; //图像名
pImg = cvLoadImage(filename,1) ; //载入图像
//看是否能成功载入
if (pImg==0)
printf("Can‘t find the picture!:(n"); //不能载入
else
{
printf("Can find the image!:)n"); //成功载入
IplImage* pImg2 = cvCreateImage(cvGetSize(pImg),
pImg->depth,
pImg->nChannels);
cvCopy(pImg, pImg2, NULL);
char* filename2 = "E:\学习\OpenCV\picture\Lena_New.jpg"; //图像名
cvSaveImage(filename2, pImg2);//把图像写入文件
cvNamedWindow( "Image", 1 );//创建窗口
cvShowImage( "Image", pImg );//显示图像
cvNamedWindow( "Image2", 1 );//创建窗
cvShowImage( "Image2", pImg2 );//显示图像
cvWaitKey(0); //等待按键
cvDestroyWindow( "Image" );//销毁窗口
cvReleaseImage( &pImg ); //释放图像
cvDestroyWindow( "Image2" );//销毁窗口
cvReleaseImage( &pImg2 ); //释放图像
}
}
OpenCV 基础知识------图像创建、访问、转换,布布扣,bubuko.com
标签:des style blog http color 使用 os strong
原文地址:http://www.cnblogs.com/Anita9002/p/3885231.html