opencv笔记相机调用
更新时间:2024-01-18 03:30:01 阅读量: 教育文库 文档下载
opencv笔记8----从大恒工业摄像头读取图像
2013-10-25 10:31 3280人阅读 评论(9) 收藏 举报
采用大恒MER系列工业摄像机,不能用OpenCV自带函数打开摄像头,需要用厂商提供的API
工业摄像头采集的图片格式为BYTE,opencv需要从内存中读取BYTE,转化成IplImage *(in C) 或者Mat( in c++)
[cpp] view plain copy print?
1. #include \2. #include \3. #include
4. #include
8. GX_DEV_HANDLE hDevice = NULL; 9. static int keycode; 10.
11. MERCamera::MERCamera() 12. {
13. GX_STATUS status = GX_STATUS_SUCCESS; 14. int64_t nValue = 0; 15.
16. GXInitLib();
17. status = GXOpenDeviceByIndex(1, &hDevice); 18. if(status != GX_STATUS_SUCCESS) 19. {
20. std::cout<<\21. return; 22. } 23. } 24.
25. MERCamera::~MERCamera() 26. {
27. GX_STATUS emStatus = GX_STATUS_SUCCESS;
28. if(m_bIsSnaping) 29. {
30. EndContinuesMode(); 31. } 32.
33. emStatus = GXCloseDevice(hDevice); 34. if(emStatus != GX_STATUS_SUCCESS) 35. {
36. std::cout<<\37. } 38.
39. //关闭设备库
40. emStatus = GXCloseLib();
41. if(emStatus != GX_STATUS_SUCCESS) 42. {
43. std::cout<<\44. } 45. } 46.
47. void MERCamera::InitCamera() 48. {
49. GX_STATUS status = GX_STATUS_SUCCESS; 50. int64_t nValue = 0; 51.
52. m_bIsSnaping = false;
53. status = GXGetEnum(hDevice, GX_ENUM_PIXEL_FORMAT, &m_nPixelFomat); 54. //获取宽度(需在停止采集状态下设置)
55. status = GXGetInt(hDevice, GX_INT_WIDTH, &nValue); 56. m_nImageWidth = (int)nValue; 57.
58. //获取高度(需在停止采集状态下设置)
59. status = GXGetInt(hDevice, GX_INT_HEIGHT, &nValue); 60. m_nImageHeight = (int)nValue; 61.
62. //获取图象数据大小
63. status = GXGetInt(hDevice, GX_INT_PAYLOAD_SIZE, &nValue); 64. m_nPayLoadSize = (int)nValue;
65. //设置采集模式。一般相机的默认采集模式为连续模式。 66. int64_t nAcqMode = GX_ACQ_MODE_CONTINUOUS;
67.
GX_ENUM_ACQUISITION_MODE, nAcqMode); 68. 69. 70. do 71. {
72. m_pBufferRaw8 = new BYTE[m_nImageWidth * m_nImageHeight]; 73. if (m_pBufferRaw8 == NULL) 74. {
75. status = GX_STATUS_ERROR; 76. break; 77. } 78.
79. //为存储RGB图像数据开辟空间
80. m_pBufferRGB = new BYTE[m_nImageWidth * m_nImageHeight * 3]; 81. if (m_pBufferRGB == NULL) 82. {
83. status = GX_STATUS_ERROR; 84. break; 85. } 86.
87. //为存储原始图像数据开辟空间
88. m_pBufferRaw = new BYTE[m_nPayLoadSize]; 89. if (m_pBufferRaw == NULL) 90. {
91. status = GX_STATUS_ERROR; 92. break; 93. } 94.
95. } while (0);
96. if (status != GX_STATUS_SUCCESS)
97. {
98. if (m_pBufferRaw8 != NULL) 99. {
100. delete[]m_pBufferRaw8; 101. m_pBufferRaw8 = NULL; 102. }
103. if (m_pBufferRaw != NULL) 104. {
105. delete[]m_pBufferRaw; 106. m_pBufferRaw = NULL; 107. }
108. if (m_pBufferRGB != NULL) 109. {
110. delete[]m_pBufferRGB; 111. m_pBufferRGB = NULL; 112. } 113. } 114. 115. } 116.
117. void MERCamera::StartContinuesMode() 118. {
119. GX_STATUS status = GX_STATUS_SUCCESS; 120. InitCamera(); 121. //注册图像处理回调函数
122. status = GXRegisterCaptureCallback(hDevice,
NULL,OnFrameCallbackFun); 123. if(!m_bIsSnaping) 124. {
125. //发送开采命令
126. status = GXSendCommand(hDevice, GX_COMMAND_ACQUISITION_START); 127. m_bIsSnaping = true; 128. } 129. while(1) 130. {
131. if(keycode == 'q') EndContinuesMode(); 132. } 133. } 134.
135. void MERCamera::EndContinuesMode() 136. {
137. GX_STATUS status = GX_STATUS_SUCCESS; 138. if(m_bIsSnaping) 139. {
140. //发送停采命令
141. status = GXSendCommand(hDevice, GX_COMMAND_ACQUISITION_STOP); 142. //注销采集回调
143. status = GXUnregisterCaptureCallback(hDevice); 144. m_bIsSnaping = false; 145. } 146. }
147. //fuction:ProcessImage(BYTE* pImageBuf) 148. //功能:raw格式图像转换为RGB图
149. void MERCamera::ProcessImage(BYTE *pImageBuf) 150. {
151. //m_objDrawImg.Enter();
152. memcpy(m_pBufferRaw, pImageBuf, m_nPayLoadSize); 153.
154. switch(m_nPixelFomat) 155. {
156. //当数据格式为12位时,位数转换为4-11 157. case GX_PIXEL_FORMAT_MONO12: 158. //将12位格式的图像转换为8位格式
159. DxRaw16toRaw8(m_pBufferRaw, m_pBufferRaw8, m_nImageWidth,
m_nImageHeight, DX_BIT_4_11); 160.
161. //将转换完成后的8位图转换为RGB图,以供显示
162. DxRaw8toRGB24(m_pBufferRaw8, m_pBufferRGB, m_nImageWidth,
m_nImageHeight, RAW2RGB_NEIGHBOUR, (DX_PIXEL_COLOR_FILTER)NONE, TRUE); 163. break;
164.
165. //当数据格式为12位时,位数转换为2-9 166. case GX_PIXEL_FORMAT_MONO10: 167. //将12位格式的图像转换为8位格式
168. DxRaw16toRaw8(m_pBufferRaw, m_pBufferRaw8, m_nImageWidth,
m_nImageHeight, DX_BIT_2_9); 169.
170. //将转换完成后的8位图转换为RGB图,以供显示
171. DxRaw8toRGB24(m_pBufferRaw8, m_pBufferRGB, m_nImageWidth,
m_nImageHeight, RAW2RGB_NEIGHBOUR, (DX_PIXEL_COLOR_FILTER)NONE, TRUE); 172. break; 173.
174. //当数据格式为8位时,将8位图转换为RGB图,以供显示 175. case GX_PIXEL_FORMAT_MONO8:
176. DxRaw8toRGB24(m_pBufferRaw, m_pBufferRGB, m_nImageWidth,
m_nImageHeight, RAW2RGB_NEIGHBOUR, (DX_PIXEL_COLOR_FILTER)NONE, TRUE); 177. break; 178. 179. default:
180. //m_objDrawImg.Leave(); 181. return; 182. } 183.
184. m_objDrawImg.Leave(); 185. } 186.
187. //图像回调处理函数
188. void __stdcall MERCamera::OnFrameCallbackFun(GX_FRAME_CALLBACK_PARAM*
pFrame) 189. {
190. MERCamera *pDlg = (MERCamera*)(pFrame->pUserParam); 191. if (pFrame->status == 0) 192. {
193. //图像获取成功 194. //对图像进行处理...
195. // cout<<\
196. pDlg->DrawImage((BYTE*)pFrame->pImgBuf, pFrame->nImgSize); 197. } 198. return; 199. } 200.
201. void MERCamera::DrawImage(BYTE *pImageBuf, int nImageSize) 202. { 203.
204. cv::namedWindow(\
205. cv::Mat img(Size(2592,1944),CV_8U,pImageBuf ); 206. flip(img,img,-1);
207. cv::imshow(\208. cv::waitKey(30); 209. 210. } 211.
正在阅读:
opencv笔记相机调用01-18
行政法与行政诉讼法(一)00923自考本科历年真题及答案200304—20130705-04
2016-2020年中国旅游行业投资分析及前景预测报告03-10
高校实验室安全考试答案12-25
林间春色作文350字06-18
小露珠教学实录研究案例06-10
铝防伪瓶盖发展方向03-30
安徽省六安市城南中学2014届高三地理9月第一次月考试题06-07
电影《2017》观后感04-02
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 调用
- 相机
- 笔记
- opencv
- 周口市房地产市场调研报告 - 图文
- 基于MATLAB的FIR滤波器的实现
- 公司工会成立方案
- 面试话术
- 破产管理人工作报告(版本二)
- 初中思想品德教学情境的有效创设与运用
- noip普及组复赛模拟试题33(答案)
- 哪些一本院校有哪些第二批次录取专业
- 案例详解万科园林景观标准化体系(园林景观企业必看)
- 采购员基础知识考试与基本知识试题
- 铝材粘磁材瞬间胶水
- 翻译完稿 GUIDE TO INSPECTIONS OF PHARMACEUTICAL QUALITY CONTROL LABORATORIES翻译完稿
- 毛泽东思想概论调查报告
- 辩词2抢票软件弊大于利
- 计量经济学(A)2007试题答案
- 五年级下册科学单元测试-第一单元教科版含解析
- 庐山旅游优势分析及开发对策
- 2018年 各区一模 名著阅读 练习
- 浅谈乡土资源在农村幼儿园美术教育中的开发和运用
- 最新人教版初二语文八年级下册第四单元教案设计含教后记教学反思