学习OpenCV(一)
2015-10-26 08:35
316 查看
看了第二章的一些代码:
#include <cv.h> #include <highgui.h> using namespace std; int g_slider_position = 0; CvCapture *g_capture = NULL; void onTrackbarSlide(int pos){ cvSetCaptureProperty(g_capture, CV_CAP_PROP_POS_FRAMES, pos); } //利用cvPyrDown创建输入图像宽高一半的图像 IplImage* doPyrDown( IplImage *in, int filter = IPL_GAUSSIAN_5x5 ){ assert(in->width % 2 == 0 && in->height % 2 == 0); IplImage *out = cvCreateImage(cvSize(in->width/2, in->height/2), in->depth, in->nChannels); cvPyrDown(in, out); return (out); } //对图像进行平滑处理 void example1( IplImage *image ){ cvNamedWindow("hzh1", 0); cvNamedWindow("hzh2", 0); cvShowImage("hzh1", image); IplImage *out = cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 3); cvSmooth(image, out, CV_GAUSSIAN, 3, 3); cvShowImage("hzh2", out); cvReleaseImage(&out); cvWaitKey(0); cvDestroyWindow("hzh1"); cvDestroyWindow("hzh2"); } //打开avi视屏 并添加滚动条 void example2(){ cvNamedWindow("xxx", CV_WINDOW_AUTOSIZE); g_capture = cvCreateFileCapture("E:\\ConsoleApplication5\\ConsoleApplication5\\hzhhzh.avi"); int frames = (int)cvGetCaptureProperty(g_capture, CV_CAP_PROP_FRAME_COUNT); if (frames != 0){ cvCreateTrackbar("Position", "xxx", &g_slider_position, frames, onTrackbarSlide); } IplImage *frame; while (1){ frame = cvQueryFrame(g_capture); if (!frame) break; cvSetTrackbarPos("Position", "xxx", ++g_slider_position); cvShowImage("xxx", frame); char c = cvWaitKey(1); if (c == 27){ break; } } cvReleaseCapture(&g_capture); cvDestroyWindow("xxx"); } //边缘检测 输出单通道图像 IplImage* doCanny( IplImage* in, double lowThresh, double highThresh, double aperture ){ // if (in->nChannels != 1){ // return 0; // } IplImage *out = cvCreateImage( cvGetSize(in), IPL_DEPTH_8U, 1 ); cvCanny(in, out, lowThresh, highThresh, aperture); return out; } //读取彩色视屏,并以灰度格式输出 void example3(){ CvCapture *capture = 0; capture = cvCreateFileCapture("E:\\opencv\\sources\\samples\\cpp\\tutorial_code\\HighGUI\\video-input-psnr-ssim\\video\\Megamind.avi"); IplImage *bgr_frame = cvQueryFrame(capture); double fps = cvGetCaptureProperty(capture, CV_CAP_PROP_FPS); CvSize size = cvSize((int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH), (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT) ); CvVideoWriter *writer = cvCreateVideoWriter( "hzhhzh.avi", CV_FOURCC('M', 'J', 'P', 'G'), fps, size ); IplImage *logpolar_frame = cvCreateImage( size, IPL_DEPTH_8U, 3 ); while ((bgr_frame = cvQueryFrame(capture)) != NULL){ cvLogPolar(bgr_frame, logpolar_frame, cvPoint2D32f(bgr_frame->width/2, bgr_frame->height/2), 40, CV_INTER_LINEAR + CV_WARP_FILL_OUTLIERS ); cvWriteFrame(writer, logpolar_frame); } cvReleaseVideoWriter(&writer); cvReleaseImage(&logpolar_frame); cvReleaseCapture(&capture); } int main() { IplImage *xx = cvvLoadImage("E:\\新建文件夹\\73F1DDAD71C72EAA72674E618DA840A8_140.jpg"); cvNamedWindow("hzh1",0); // cvNamedWindow("hzh2",0); // cvRectangle(xx, cvPoint(5, 10), cvPoint(20, 300), cvScalar(255-, 0, 0)); cvShowImage("hzh1", xx); // cvShowImage("hzh2", doCanny(xx,10,100,3)); cvWaitKey(0); // cvDestroyWindow("hzh1"); // cvDestroyWindow("hzh2"); // // example2(); // example1(xx); // example3(); // example2(); return 0; }
相关文章推荐
- Linux/Ubuntu 怎么设置打开远程桌面登录连接
- 10 个给 Linux 用户的有用工具
- Linux回收站管理
- LINUX设备驱动程序的注意事项(两)建设和执行模块
- CDH(Cloudera)版本的 Hadoop
- Linux 中 df 命令的11个例子
- Linux 中 df 命令的11个例子
- control + D 退出linux 当前命令(行)
- 自定义bash终端提示符
- [Angular 2] Template property syntax
- VmWare10 32位安装CentOS7遇到的问题及解决办法
- 如何判断linux用户是否为root用户
- iOS应用架构谈 view层的组织和调用方案
- Xshell学习--菜鸟篇
- 1.windows技巧-开机规避自动打开go_miscrosoft网站
- hadoop集群搭建——轻松版
- linux下设置了SSH免密码登录但还是需要输入密码的解决办法
- autoprefixer
- Linux Bash代码 利用for循环实现命令的多次执行
- 《HBase权威指南》读书笔记8:第八章 架构