已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
QT下利用 OpenCv从摄像头读出图片并显示源 码 2012-09-30 11:59:32| 分类: QT and QTOPIA | 标签:camera opencv qt |举报| 字号 订阅 /* *camera.h */ #ifndef _DEMO_H_ #define _DEMO_H_ #include #include #include #include #include #include #include #include #include #include #include “/jpeglib.h“ #include “operation.h“ #include “tcpsocket.h“ #define PORT 3343 /线程类 class SendThread : public QThread public: SendThread(void); void run(); void setImage(QImage public: Send_picture *socket; QImage val; ; /* * *Camera_Operation 类,用来显示摄像头图像采集界面 *1. 打开摄像头 *2. 开始采集 *3. 显示 *4. 暂停 * */ class Camera_Operation : public QDialog Q_OBJECT public: Camera_Operation(QWidget *parent = 0,int i=0); Camera_Operation(); QTabWidget *tabwidget; QWidget *mainwidget; QWidget *twowidget; CvCapture *capture; IplImage *frame; QImage image; QTimer *timer; QPushButton *save; QPushButton *play; QPushButton *puspend; QPushButton *learn; QPushButton *judge; QPushButton *add; QPushButton *creturn; / QUdpSocket *socket; /UDP 协议,传图片 Send_picture *socket; SendThread *thread; public slots: void save_camera(void); void play_camera(void); void puspend_camera(void); void read_camera(void); void return_home(void); protected: void timerEvent(QTimerEvent *event); void paintEvent(QPaintEvent *); ; #endif /- /* *camera.cpp */ #include #include “highgui.h“ #include “cv.h“ #include #include #include #include #include #include #include “camera.h“ #include “/def.h“ #define JPEG_QUALITY 80 char * image_buffer; /* Points to large array of R,G,B-order data */ int image_height; /* Number of rows in image */ int image_width; /* Number of columns in image */ /* 函数名字:write_JPEG_file 函数功能:压缩一张图片到内存 参 数: 返 回 值: */ unsigned long write_JPEG_file (unsigned char *target, char *buffer, int width, int height ) struct jpeg_compress_struct cinfo; struct jpeg_error_mgr jerr; JSAMPROW row_pointer1; int row_stride; unsigned long size; /指定错误处理器 cinfo.err = jpeg_std_error( jpeg_create_compress( jpeg_mem_dest( /指定宽度,高度,RGB cinfo.image_width = 320; cinfo.image_height = 240; cinfo.input_components = 3; cinfo.in_color_space = JCS_RGB; /采用默认设置 jpeg_set_defaults( /设置图片质量 jpeg_set_quality( /开始压缩 jpeg_start_compress( row_stride = cinfo.image_width * 3; while (cinfo.next_scanline state = CONNECT_ON) QByteArray pic; QBuffer buffer( buffer.open(QIODevice:ReadWrite); val.save( qDebug() Write(pic); void SendThread : setImage(QImage Camera_Operation : Camera_Operation(QWidget *parent,int i) : QDialog(parent) setGeometry(winxstart,winystart,Usewinwide,Usewinhigh); / mainwidget = new QWidget(); play = new QPushButton(“play“,this); play - setGeometry(10,20,75,40); puspend = new QPushButton(“puspend“,this); puspend - setGeometry(10,70,75,40); save = new QPushButton(“save“,this); save - setGeometry(10,120,75,40); creturn = new QPushButton(“return“,this); creturn - setGeometry(10,170,75,40); learn = new QPushButton(“learn“,this); learn - setGeometry(270,220,65,40); judge = new QPushButton(“judge“,this); judge - setGeometry(340,220,65,40); add = new QPushButton(“add“,this); add - setGeometry(410,220,65,40); timer = new QTimer(this); / if(i=0) if(!(capture = cvCreateCameraCapture(-1) QMessageBox:about(this,“warning“,“cant open the camero“); return; / connect(save,SIGNAL(clicked(),this,SLOT(save_camera(); connect(play,SIGNAL(clicked(),this,SLOT(play_camera(); connect(puspend,SIGNAL(clicked(),this,SLOT(puspend_camera(); connect(creturn,SIGNAL(clicked(),this,SLOT(return_home(); connect(timer,SIGNAL(timeout(),this,SLOT(read_camera(); / socket = new Send_picture(3343); timer - start(30); Camera_Operation : Camera_Operation() cvReleaseImage( /释放 cvReleaseCapture( /* * *保存图片到 Nand Flash 下/home/picture 目录,文件名从 1.png 开始递增,文 件最大数量 199 * */ void Camera_Operation : save_camera(void) static int i=0; char fileName25; if(i200)i=0; i+; sprintf(fileName,“/home/picture/%d.bmp“,i); qDebug() start(30); /* * *暂停播放,停止定时器 * */ void Camera_Operation : puspend_camera(void) timer - stop(); / cvReleaseImage( void Camera_Operation : return_home(void) timer - stop(); cvReleaseImage( /释放 cvReleaseCapture( close(); /* * *从摄像头中读取一张图片,并保存到 QImage 中 * */ void Camera_Operation : read_camera(void) char *buffer; frame=cvQueryFrame(capture); if(frame=0) QMessageBox:about(this,“warning“,“Cant query the frame“); timer - stop(); return; /图像编码 image_buffer = (char*)malloc(512*1025); struct jpeg_compress_struct cinfo; struct jpeg_error_mgr jerr; JSAMPROW row_pointer1; int row_stride; unsigned long size; /指定错误处理器 cinfo.err = jpeg_std_error( jpeg_create_compress( jpeg_mem_dest( /指定宽度,高度,RGB cinfo.image_width = frame-width; cinfo.image_height = frame-height; cinfo.input_components = 3; cinfo.in_color_space = JCS_RGB; /采用默认设置 jpeg_set_defaults( /设置图片质量 jpeg_set_quality( /开始压缩 jpeg_start_compress( row_stride = cinfo.image_width * 3; while (cinfo.next_scanline imageDatacinfo.next_scanline * row_stride; (void) jpeg_write_scanlines( jpeg_finish_compress( jpeg_destroy_compress( printf(“%dn“,size); qDebug() width; qDebug() height; QImage qImage(uchar *)frame-imageData, frame-width, frame-height, frame-widthStep, QImage:Format_RGB888); image=qImage.scaled(200,200); /当读到图片的时候就发送 /* if(socket - state = CONNECT_ON) socket - Write(image_buffer,size); */ free(image_buffer); timer - start(30); update (); /采集到后更新界面 /实现定时器函数 void Camera_Operation : timerEvent(QTimerEvent *event) frame=cvQueryFrame(capture); if(frame=0) QMessageBox:about(this,“warning“,“Cant query the frame“); return; QImage qImage(uchar *)frame-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年水产行业生态循环养殖报告
- 《环境监测数据质量问题对生态环境监测的影响及对策》教学研究课题报告
- 突发事故应急预案汇编15篇
- 26年老年皮肤护理工具使用培训课件
- 2026届四川省成都市双流区双流中学高三下第三次月考综合试卷含解析
- 东方红印刷厂印刷材料销售合同协议合同三篇
- 肾癌亚型CT征象与病理MVD、Ki67表达的相关性探索
- 肾上腺三维断层解剖特征及其在影像诊断中的应用探究
- 肺表面活性蛋白D:洞悉慢性阻塞性肺疾病急性加重期的关键纽带
- 肺炎支原体:小儿急性呼吸道感染中的关键角色与影响探究
- 中国军事武器
- 第10课第一框课件《抵制校园欺凌和暴力》-【中职专用】中职思想政治《心理健康与职业生涯》(高教版2023·基础模块)
- 历年甘肃省三支一扶考试真题题库(含答案详解)
- 六年级语文下册期中复习 课件
- 病理性骨折的护理
- AIB(2022版)统一检查标准-前提方案与食品安全程序
- 桥梁墩身施工安全注意事项模版
- 激素调节身体多种机能 高二上学期生物浙科版选择性必修1
- 《工程伦理》课后习题及答案
- 地灾防治工程设计中应注意的问题
- GB/T 24356-2023测绘成果质量检查与验收
评论
0/150
提交评论