opencv学习笔记(一)——图像加载、显示、输出

想到opencv总有一些激动,觉得他的功能太强大了。学习opencv也有一段日子,但是回过头来想想总感觉有点不踏实,因为我总是在调用他的接口,好多东西没有深入去理解、去弄透。作为一个专业人士,这是不能容忍的,所以回过头来将自己学过的东西记录下来,从头整理一遍,也许只有写出来才是自己真正学到的,希望自己所写的东西能一步一步伴着自己一起成长。

我所写的opencv都是从opencv2.0版本开始的,对以前的1.0版本不是特别了解,往后我所写的东西基本上都是基于自己目前的电脑安装的环境(opencv2.4.9+vs2010)进行的,如后面有改变会另行提醒。我的学习习惯就是带着问题去学习,这样能给自己加深印象。下面我就给出图片加载显示的代码,大家可以在自己的平台上运行,从结果分析代码,一旦我们看到opencv的强大,就有了学习的冲动。好了,现在就让我们目睹一下opencv代码的芳容吧。

#include<iostream>  
#include <opencv2/core/core.hpp>  
#include <opencv2/highgui/highgui.hpp>  

using namespace std;
using namespace cv;  


int main()  
{  
    // 读入一张图片(游戏原画)  
    Mat img=imread("tank_1.jpg");

    // 创建一个名为 "坦克世界"窗口  
    namedWindow("坦克世界"); 

    // 在窗口中显示游戏原画
    //imshow("游戏原画",img);
    imshow("坦克世界",img); 

    //输出一张图片到工程目录下
这是opencv svm图像分类的整个工程代码,在VS2010下打开即可。整个工程文件以及我的所有训练的图片存放在这里,需要的可以下载,自己在找训练图片写代码花了很多时间,下载完后自行解压,训练图片测试图片可以从这免费下载http://download.youkuaiyun.com/detail/always2015/8944959,project data文件夹直接放在D盘就行,里面存放训练的图片待测试图片,以及训练过程中生成的中间文件,现在这个下载object_classfication_end则是工程文件,我用的是vs2010打开即可,下面工程里有几个要注意的地方: 1、在这个模块中使用到了c++的boost库,但是在这里有个版本的限制。这个模块的代码只能在boost版本1.46以上使用,这个版本以下的就不能用了,直接运行就会出错,这是最需要注意的。因为在1.46版本以上中对比CsSVM这个类些成员函数做了些私有化的修改,所以在使用该类初始化对象时候需要注意。 2、我的模块所使用到的函数产生的中间结果都是在个categorizer类中声明的,由于不同的执行阶段中间结果有很多个,例如:训练图片聚类后所得到单词表矩阵,svm分类器的训练的结果等,中间结果的产生是相当耗时的,所以在刚开始就考虑到第次运行时候把他以文件XML的格式保存下来,下次使用到的时候在读取。将个矩阵存入文本的时候可以直接用输出流的方式将个矩阵存入,但是读取时候如果用输入流直接个矩阵变量的形式读取,那就肯定报错,因为输入流不支持直接对矩阵的操作,所以这时候只能对矩阵的元素个进行读取了。 3、在测试的时候,如果输入的图片太小,或者全为黑色,当经过特征提取单词构造完成使用svm进行分类时候会出现错误。经过调试代码,发现上述图片在生成该图片的单词的时候所得到的单词矩阵会是个空矩阵,即该矩阵的行列数都为0,所以在使用svm分类器时候就出错。所以在使用每个输入图片的单词矩阵的时候先做个判断,如果该矩阵行列数都为0,那么该图片直接跳过。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值