04.#include "stdafx.h"
05.#include <stdlib.h>
06.#include <stdio.h>
07.#include <math.h>
08.#include <cv.h>
09.#include <highgui.h>
10.int main(int argc, char *argv[])
11.{
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.}
50.
51.//
52.//IplImage* cvLoadImage( const char* filename, int flags=CV_LOAD_IMAGE_COLOR );
53.//filename
54.//要被读入的文件的文件名。
55.//flags
56.//指定读入图像的颜色和深度:
57.//指定的颜色可以将输入的图片转为3信道(CV_LOAD_IMAGE_COLOR)也即彩色(>0),
58.//单信道 (CV_LOAD_IMAGE_GRAYSCALE)也即灰色(=0), 或者保持不变(CV_LOAD_IMAGE_ANYCOLOR)(<0)。
59.//深度指定输入的图像是否转为每个颜色信道每象素8位,(OpenCV的早期版本一样),或者同输入的图像一样保持不变。
60.//选中CV_LOAD_IMAGE_ANYDEPTH,则输入图像格式可以为8位无符号,16位无符号,32位有符号或者32位浮点型。
61.//如果输入有冲突的标志,将采用较小的数字值。
62.//比如CV_LOAD_IMAGE_COLOR | CV_LOAD_IMAGE_ANYCOLOR 将载入3信道图。
63.//CV_LOAD_IMAGE_ANYCOLOR和CV_LOAD_IMAGE_UNCHANGED是等值的。
64.//但是,CV_LOAD_IMAGE_ANYCOLOR有着可以和CV_LOAD_IMAGE_ANYDEPTH同时使用的优点,
65.//所以CV_LOAD_IMAGE_UNCHANGED不再使用了。
66.//如果想要载入最真实的图像,选择CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR。
67.//函数cvLoadImage从指定文件读入图像,返回读入图像的指针。目前支持如下文件格式:
68.//Windows位图文件 - BMP, DIB;
69.//JPEG文件 - JPEG, JPG, JPE;
70.//便携式网络图片 - PNG;
71.//便携式图像格式 - PBM,PGM,PPM;
72.//Sun rasters - SR,RAS;
73.//TIFF文件 - TIFF,TIF;
74.//OpenEXR HDR 图片 - EXR;
75.//JPEG 2000 图片- jp2。
76.//=======================================================================================
77.//IplImage
78.//
79.//IPL 图像头
80.//typedef struct _IplImage
81.//
82.//
83.//
84.//
85.//
86.//
88.//
89.//
90.//
93.//
95.//
96.//
97.//
98.//
99.//
100.//
101.//
102.//
103.//
104.//
105.//
106.//
107.//
108.//
109.//
110.//IplImage结构来自于 Intel Image Processing Library(是其本身所具有的)。OpenCV 只支持其中的一个子集:
111.//alphaChannel 在OpenCV中被忽略。
112.//colorModel 和channelSeq 被OpenCV忽略。
113.//OpenCV颜色转换的唯一函数 cvCvtColor把原图像的颜色空间的目标图像的颜色空间作为一个参数。
114.//dataOrder 必须是IPL_DATA_ORDER_PIXEL (颜色通道是交叉存取),
115.//然而平面图像的被选择通道可以被处理,就像COI(感兴趣的通道)被设置过一样。
116.//align 是被OpenCV忽略的,而用 widthStep 去访问后继的图像行。
117.//不支持maskROI 。处理MASK的函数把他当作一个分离的参数。
118.//MASK在 OpenCV 里是 8-bit,然而在 IPL他是 1-bit。
119.//tileInfo 不支持。
120.//BorderMode和BorderConst是不支持的。
121.//每个 OpenCV 函数处理像素的邻近的像素,
122.//通常使用单一的固定代码边际模式。
123.//除了上述限制,OpenCV处理ROI有不同的要求。
124.//要求原图像和目标图像的尺寸或 ROI的尺寸必须
125.//(根据不同的操作,例如cvPyrDown 目标图像的宽(高)必须等于原图像的宽(高)除以2 ±1)
126.//精确匹配,而IPL处理交叉区域,如图像的大小或ROI大小可能是完全独立的。
127.//======================================================================
128.//Processing a 512x512 image with 3 channels
129.//height=512
130.//从上述关系可以看出
131.//在C++内图像的存储是与Matlab不一样的
132.//是在C++内存储的方式是按照行列方式,每一行内存储了该列(所有层)的信息。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/superdont/archive/2010/09/27/5910270.aspx
另外一种方法