highgui模块中常用函数源码
来源:互联网 发布:淘宝上怎么买止咳水 编辑:程序博客网 时间:2024/04/27 12:22
highgui模块中常用函数源码
其头文件:highgui.hpp
其中源文件
1、imread()函数
原型:CV_EXPORTS_W Mat imread( const string& filename, intflags=1 );
源代码:
Mat imread( const string& filename, int flags ){ Mat img; imread_( filename, flags, LOAD_MAT, &img ); return img;}
其中imread_定义如下:
static void*imread_( const string& filename, int flags, int hdrtype, Mat* mat=0 ){ IplImage* image = 0; CvMat *matrix = 0; Mat temp, *data = &temp; ImageDecoder decoder = findDecoder(filename); if( decoder.empty() ) return 0; decoder->setSource(filename); if( !decoder->readHeader() ) return 0; CvSize size; size.width = decoder->width(); size.height = decoder->height(); int type = decoder->type(); if( flags != -1 ) { if( (flags & CV_LOAD_IMAGE_ANYDEPTH) == 0 ) type = CV_MAKETYPE(CV_8U, CV_MAT_CN(type)); if( (flags & CV_LOAD_IMAGE_COLOR) != 0 || ((flags & CV_LOAD_IMAGE_ANYCOLOR) != 0 && CV_MAT_CN(type) > 1) ) type = CV_MAKETYPE(CV_MAT_DEPTH(type), 3); else type = CV_MAKETYPE(CV_MAT_DEPTH(type), 1); } if( hdrtype == LOAD_CVMAT || hdrtype == LOAD_MAT ) { if( hdrtype == LOAD_CVMAT ) { matrix = cvCreateMat( size.height, size.width, type ); temp = cvarrToMat(matrix); } else { mat->create( size.height, size.width, type ); data = mat; } } else { image = cvCreateImage( size, cvIplDepth(type), CV_MAT_CN(type) ); temp = cvarrToMat(image); } if( !decoder->readData( *data )) { cvReleaseImage( &image ); cvReleaseMat( &matrix ); if( mat ) mat->release(); return 0; } return hdrtype == LOAD_CVMAT ? (void*)matrix : hdrtype == LOAD_IMAGE ? (void*)image : (void*)mat;}
2、imwrite()函数
原型:CV_EXPORTS_W boolimwrite(const string&filename, InputArrayimg,const vector<int>¶ms=vector<int>());
源代码:
bool imwrite( const string& filename, InputArray _img,const vector<int>& params ){ Mat img = _img.getMat(); return imwrite_(filename, img, params, false);}static bool imwrite_( const string& filename, const Mat& image, const vector<int>& params, bool flipv ){ Mat temp; const Mat* pimage = ℑ CV_Assert( image.channels() == 1 || image.channels() == 3 || image.channels() == 4 ); ImageEncoder encoder = findEncoder( filename ); if( encoder.empty() ) CV_Error( CV_StsError, "could not find a writer for the specified extension" ); if( !encoder->isFormatSupported(image.depth()) ) { CV_Assert( encoder->isFormatSupported(CV_8U) ); image.convertTo( temp, CV_8U ); pimage = &temp; } if( flipv ) { flip(*pimage, temp, 0); pimage = &temp; } encoder->setDestination( filename ); bool code = encoder->write( *pimage, params ); //CV_Assert( code ); return code;}
3、imshow()函数
原型:CV_EXPORTS_W void imshow(const string&winname, InputArraymat);
源代码:
void cv::imshow( const string& winname, InputArray _img ){ const Size size = _img.size();#ifndef HAVE_OPENGL CV_Assert(size.width>0 && size.height>0); { Mat img = _img.getMat(); CvMat c_img = img; cvShowImage(winname.c_str(), &c_img); }#else const double useGl = getWindowProperty(winname, WND_PROP_OPENGL); CV_Assert(size.width>0 && size.height>0); if (useGl <= 0) { Mat img = _img.getMat(); CvMat c_img = img; cvShowImage(winname.c_str(), &c_img); } else { const double autoSize = getWindowProperty(winname, WND_PROP_AUTOSIZE); if (autoSize > 0) { resizeWindow(winname, size.width, size.height); } setOpenGlContext(winname); if (_img.kind() == _InputArray::OPENGL_TEXTURE) { cv::ogl::Texture2D& tex = wndTexs[winname]; tex = _img.getOGlTexture2D(); tex.setAutoRelease(false); setOpenGlDrawCallback(winname, glDrawTextureCallback, &tex); } else { cv::ogl::Texture2D& tex = ownWndTexs[winname]; if (_img.kind() == _InputArray::GPU_MAT) { cv::ogl::Buffer& buf = ownWndBufs[winname]; buf.copyFrom(_img); buf.setAutoRelease(false); tex.copyFrom(buf); tex.setAutoRelease(false); } else { tex.copyFrom(_img); } tex.setAutoRelease(false); setOpenGlDrawCallback(winname, glDrawTextureCallback, &tex); } updateWindow(winname); }#endif}
4、waitKey()函数
原型:CV_EXPORTS_W int waitKey(int delay = 0);
源代码:
int cv::waitKey(int delay){ return cvWaitKey(delay);}CV_IMPL int cvWaitKey( int ){ CV_NO_GUI_ERROR( "cvWaitKey" ); return -1;}#define CV_NO_GUI_ERROR(funcname) \ cvError( CV_StsError, funcname, \ "The function is not implemented. " \ "Rebuild the library with Windows, GTK+ 2.x or Carbon support. "\ "If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script", \ __FILE__, __LINE__ )
5、namedWindow()函数
原型:CV_EXPORTS_W void namedWindow(const string&winname, intflags= WINDOW_AUTOSIZE);
源代码:
void cv::namedWindow( const string& winname, int flags ){ cvNamedWindow( winname.c_str(), flags );}CV_IMPL int cvNamedWindow( const char*, int ){ CV_NO_GUI_ERROR("cvNamedWindow"); return -1;}
6、创建滚动条
原型:
(1)typedef void (*MouseCallback)(int event, int x, int y, int flags, void* userdata);//! assigns callback for mouse events
(2)typedef void (CV_CDECL *TrackbarCallback)(int pos, void* userdata);(3)CV_EXPORTS int createTrackbar(const string& trackbarname, const string& winname, int* value, int count, TrackbarCallback onChange = 0, void* userdata = 0);
(4)CV_EXPORTS_W int getTrackbarPos(const string& trackbarname, const string& winname);
(5)CV_EXPORTS_W void setTrackbarPos(const string& trackbarname, const string& winname, int pos);
源代码:
int cv::createTrackbar(const string& trackbarName, const string& winName, int* value, int count, TrackbarCallback callback, void* userdata){ return cvCreateTrackbar2(trackbarName.c_str(), winName.c_str(), value, count, callback, userdata);}void cv::setTrackbarPos( const string& trackbarName, const string& winName, int value ){ cvSetTrackbarPos(trackbarName.c_str(), winName.c_str(), value );}int cv::getTrackbarPos( const string& trackbarName, const string& winName ){ return cvGetTrackbarPos(trackbarName.c_str(), winName.c_str());}
7、鼠标操作
CV_EXPORTS void setMouseCallback(const string& winname, MouseCallback onMouse, void* userdata = 0);
void cv::setMouseCallback( const string& windowName, MouseCallback onMouse, void* param){ cvSetMouseCallback(windowName.c_str(), onMouse, param);}
0 0
- highgui模块中常用函数源码
- imgproc模块中常用函数源码
- opencv c++函数 highgui模块 3
- opencv中highgui库中的函数集合
- HighGUI视频读写函数
- HighGUI视频读写函数
- HighGUI视频读写函数
- Python中glob模块常用函数
- Python中re模块常用函数
- Python os 模块中常用函数
- Python中re模块常用函数
- mochiweb源码阅读6-request模块常用函数说明
- opencv c++函数 highgui模块 1 为程序界面添加滑动条
- opencv c++函数 highgui模块 2 OpenCV的视频输入和相似度测量
- HighGUI视频读写函数解析
- HighGUI视频读写函数解析
- HighGUI视频读写函数解析
- Opencv HighGUI函数_窗口
- 2016年总结
- arraylist源码分析
- Spark集群搭建与测试
- 创建APP桌面快捷方式?
- 江南白衣之-Java性能优化-高性能场景下,Map家族的优化使用建议
- highgui模块中常用函数源码
- 翻币问题pascal程序
- ko.mapping.fromJS不同参数导致的不同结果
- 最优乘车-ssl 1194
- poj 3537 Crosses and Crosses (Multi-SG游戏)
- 对象指针
- Ubuntu 系统下安装 python库
- Head First HTML与CSS阅读笔记1
- 【每日一记】设计模式——状态模式