最近由于在项目中用到了Opencv库,但是为了更好的显示图像还是使用了Cximage库,它可以快捷地存取、显示、转换各种图像。Opencv库用于高级图像处理与识别。为了使Cximage图像与Opencv图像交互,写了个Cximage转换到IplImage的类。
OpenCV2CXimage.h
01.#pragma once
02./*
03.* 类说明:OpenCV图像与CXimage图像互转
04.* 用于OpenCV的图像与CXimage图像格式互转进行封装。 OpenCV的图像位数必须是大等于8的整数倍,支持BMP,JPG图像格式;CXimage的图像位数可以是1、2、4、8、16、24,支持BMP,JPG,TIF,PNG,GIF图像格式。
05.*/
06.
07.#include "unicode//ximage.h"
08.#pragma comment(lib, "cximage_unicode.lib")
09.//#pragma comment(lib, "j2k_unicode.lib")
10.#pragma comment(lib, "jasper_unicode.lib")
11.#pragma comment(lib, "jbig_unicode.lib")
12.#pragma comment(lib, "Jpeg_unicode.lib")
13.#pragma comment(lib, "png_unicode.lib")
14.#pragma comment(lib, "Tiff_unicode.lib")
15.#pragma comment(lib, "zlib_unicode.lib")
16.#pragma comment(lib, "mng_unicode.lib")
17.#pragma comment(lib, "libdcr_unicode.lib")
18.
19.#include "cv.h"
20.#include "cxcore.h"
21.#include "highgui.h"
22.#ifdef _DEBUG
23. #pragma comment(lib, "cxcore200d.lib")
24. #pragma comment(lib, "cv200d.lib")
25. #pragma comment(lib, "highgui200d.lib")
26.#else
27. #pragma comment(lib, "cxcore200.lib")
28. #pragma comment(lib, "cv200.lib")
29. #pragma comment(lib, "highgui200.lib")
30.#endif
31.
32.class OpenCV2CXimage
33.{
34.public:
35. OpenCV2CXimage(void);
36. ~OpenCV2CXimage(void);
37.
38. /*
39. 功能说明: 获取黑点标记的方式
40. 参数说明: cxImage 图像处理类
41. 返回值: 黑点标记
42. */
43. static int OpenCV2CXimage::GetBlackColor(CxImage cxImage);
44.
45. /*
46. 功能说明: 获取白点标记的方式
47. 参数说明: cxImage 图像处理类
48. 返回值: 黑点标记
49. */
50. static int OpenCV2CXimage::GetWhiteColor(CxImage cxImage);
51.
52. /*
53. *功能说明:转换Cximage到IplImage(注:由于IplImage结构不支持图像像数非8位格式,所以强制转换成8位整数倍)
54. *参数说明:src,表示原始Cximage图像;dst,[out] 表示Opencv图像IplImage结构
55. *返回值:bool类型。true,表示成功;flase,表示失败。
56. */
57. bool Cximage2IplImage(CxImage *src,IplImage **dst);
58.
59. /*
60. *功能说明:转换IplImage到Cximage
61. *参数说明:src,表示Opencv图像IplImage结构;dst,[out] 表示输出Cximage图像;nBpp,表示输出Cximage图像位数占多少位[一个像数占多少位](1,8,24);
62. *返回值:bool类型。true,表示成功;flase,表示失败。
63. */
64. bool IplImage2Cximage(IplImage *src,CxImage *dst,long nBpp=8);
65.
66. /*
67. *功能说明:图象格式转换
68. *参数说明:src,表示输入Cximage图像;dst,[out] 表示输出Cximage图像;imagetype,表示图象类型
69. *返回值:bool类型。true,表示成功;flase,表示失败。
70. */
71. bool CxImageFormatConvert(CxImage *src,CxImage *dst,long imagetype = CXIMAGE_FORMAT_BMP);
72.
73.protected:
74. RGBQUAD *m_pPal;//调色版
75. int m_nPalatteCount;
76.};