OpenCV实现好玩的实用的小程序

本文介绍了如何利用OpenCV库进行AVI文件的读取与播放,并详细讲解了如何驱动摄像头进行实时视频捕捉,是入门OpenCV的好材料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、读取AVI文件并显示

#include <opencv2/highgui/highgui.hpp>

using namespace cv;

int main()
{
    Mat img_src;
    VideoCapture vido_file("vido.avi");
    for (;;)
    {
        vido_file >>img_src;
        imshow("video_src",img_src);//可以事先不用新建一个窗口
        char c=(char)waitKey(47);
        if (c==27)
        {
            break;    
        }
    }
    return 0;
}

2、驱动摄像头

#include <opencv2/highgui/highgui.hpp>

using namespace cv;

int main()
{
    Mat img_src;
    VideoCapture cam(0);
    for (;;)
    {
        cam >>img_src;
        imshow("camera",img_src);//可以事先不用新建一个窗口
        char c=(char)waitKey(30);
        if (c==27)
        {
            break;    
        }
    }
    return 0;
}
OpenCV小项目 这是一个个人在使用OpenCV过程中写的一些小项目,以及一些非常有用的OpenCV代码,有些代码是对某论文中的部分实现。 注意:代码是在Xcode里写的,如果要在win下测试,遇到问题自己修改。 opencv-rootsift-py 用python和OpenCV写的一个rootsift实现,其中RootSIFT部分的代码参照Implementing RootSIFT in Python and OpenCV这篇文章所写,通过这个你可以了解Three things everyone should know to improve object retrieval这篇文章中RootSIFT是怎么实现的。 sift(asift)-match-with-ransac-cpp 用C++和OpenCV写的一个图像匹配实现,里面包含了采用1NN匹配可视化、1NN匹配后经RANSAC剔除错配点可视化、1NN/2NN<0.8匹配可视化、1NN/2NN<0.8经 RANSAC剔除错配点可视化四个过程,其中1NN/2NN<0.8匹配过程是Lowe的Raw feature match,具体可以阅读Lowe的Distinctive image features from scale-invariant keypoints这篇文章。这个对图像检索重排非常有用。另外里面还有用OpenCV写的ASIFT,这部分来源于OPENCV ASIFT C++ IMPLEMENTATION,ASIFT还可以到官网页面下载,ASIFT提取的关键点 比SIFT要多得多,速度非常慢,不推荐在对要求实时性的应用中使用。 更多详细的分析可以阅读博文SIFT(ASIFT) Matching with RANSAC。 有用链接 OpenCV3.0文档 // 测试sparse unsigned int centersNum = 10; vector descrNums; descrNums.push_back(8); descrNums.push_back(12); //unsigned int T[] = {1, 2, 1, 3, 2, 5, 4, 3, 10, 5; 4, 2, 6, 5, 2, 5, 4, 6, 2, 4}; unsigned int T[] = {1, 2, 1, 3, 2, 5, 4, 3, 10, 5, 4, 2, 6, 5, 2, 5, 4, 6, 2, 4}; sp_mat Hist(descrNums.size(), centersNum); static long int count = 0; for (int i = 0; i < descrNums.size(); i++){ unsigned int* desrcElementsTmp = new unsigned int[descrNums[i]]; memcpy(desrcElementsTmp, T + count, descrNums[i] * sizeof(T[0])); //cout << desrcElementsTmp[0] << '\t' << desrcElementsTmp[1] << '\t' << desrcElementsTmp[2] << '\t' << desrcElementsTmp[3] << '\t' << desrcElementsTmp[4] << '\t' <<endl; //cout << desrcElementsTmp[5] << '\t' << desrcElementsTmp[6] << '\t' << desrcElementsTmp[7] << '\t' << desrcElementsTmp[8] << '\t' << desrcElementsTmp[9] << '\t' << desrcElementsTmp[10] << '\t' <<endl; //cout << endl; sp_mat X(1, centersNum); X.zeros(); for (int j = 0; j < descrNums[i]; j++){ X(0, desrcElementsTmp[j]-1) += 1; } X.print("X:"); X = X/norm(X, 2); Hist.row(i) = X; count = count + descrNums[i]; delete desrcElementsTmp; } //Hist.print("Hist:");
### 有趣的 MATLAB 开源项目 #### AHRS算法实现 XioTechnologies公司的开源项目专注于惯性测量单元(IMU),特别是包含了AHRS(姿态航向参考系统)算法的实现[^1]。此项目不仅提供了基本的姿态解算功能,还附带了一个交互式的3D图形界面用于可视化传感器数据的变化情况。对于希望深入理解IMU工作原理以及如何通过软件解析其输出的研究人员来说,这是一个极佳的学习资源。 ```matlab % 这里是一个简单的MATLAB代码片段来读取来自IMU的数据并应用AHRS算法计算欧拉角 function [roll, pitch, yaw] = computeEulerAngles(imuData) % imuData 是从IMU获取的一组原始速度计和陀螺仪读数 % 初始化AHRS对象或其他必要的变量... % 应用AHRS算法更新内部状态估计... roll = ...; % 计算横滚角度 pitch = ...; % 计算俯仰角度 yaw = ...; % 计算偏航角度 end ``` #### 图像处理与计算机视觉工具箱扩展 另一个值得探索的方向是由OpenCV提供的图像处理能力及其对多种编程环境的支持,其中包括MATLAB接口[^2]。利用这些特性,开发者可以在MATLAB环境中快速构建原型应用程序,比如面部识别、物体检测或是增强现实体验等。 ```matlab % 使用OpenCV函数载图片并在MATLAB中显示 img = imread('example.jpg'); imshow(img); title('Original Image'); % 调用OpenCV方法执行边缘检测 edges = edge(rgb2gray(img), 'Canny'); figure; imshow(edges); title('Edge Detection Result using OpenCV Canny Method'); ``` #### 高性能飞行控制系统模拟器 最后提到的是一个专为学术研究定制的小型无人机平台的设计文档和技术细节[^3]。虽然该项目本身不是纯粹的MATLAB作品,但它确实展示了如何借助MATLAB/Simulink来进行复杂的嵌入式系统的建模与仿真。尤其是针对那些想要实践先进控制理论的学生而言,这无疑是一份宝贵的参考资料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值