购物网站公司要花费多少钱,中国企业信用信息查询网官网,wordpress4.0伪静态,共享充电宝app开发《Opencv3编程入门》学习笔记
记录一下在学习《Opencv3编程入门》这本书时遇到的问题或重要的知识点。
第二章 OpenCV 官方例程引导与赏析
openv官方提供的示例程序#xff1a;具体位于..\opencv\sources\samples\cpp ..\opencv\sources\samples\cpp\tutorial_code路径下存…《Opencv3编程入门》学习笔记
记录一下在学习《Opencv3编程入门》这本书时遇到的问题或重要的知识点。
第二章 OpenCV 官方例程引导与赏析
openv官方提供的示例程序具体位于..\opencv\sources\samples\cpp ..\opencv\sources\samples\cpp\tutorial_code路径下存放着和官方教程配套的示例程序
一、opencv OpenCV 官方例程引导与赏析
可以自己动手运行一下官方的示例程序书上的有的具体地址都没给。
一彩色目标跟踪Camshift
程序的用法是根据鼠标框选区域的色度光谱来进行摄像头读入的视频目标的跟踪。 详见目录..\opencv\sources\samples\cpp\camshiftdemo.cpp
二光流optical flow
光流法是目前运动图像分析的重要方法包含了目标运动信息。 只有官方demo运行图没有具体地址。
三点跟踪lkdemo
程序运行后会自动启用摄像头没这时按键盘上的r键来启动自动点跟踪便可以看到如图2.7所示的效果图。而我们在摄像头中移动物体可以看到物体上的点随着物体一同移动如图2.8所示。 详见目录..\opencv\sources\samples\cpp\lkdemo.cpp
四人脸识别Camshift
运行程序将自己的脸对准摄像头或者放置一张照片对准摄像头任其捕获便可以发现程序准确地识别出了人脸并用彩色的圆将脸圈出。 详见目录..\opencv\sources\samples\cpp\tutorial_code\objectDetection 还需要将..\opencv\sources\data\haarcascades路径下的haarcascade_eye_tree_eyeglasses.xml和haarcascade_frontalface_alt.xml复制到和源文件同一目录下才能正确运行。 相机不好使…效果图如书上所示
五支持向量机引导
只有官方demo运行图没有具体地址。 第一个程序是使用CvSVM::train函数训练一个SVM分类器。 第二个程序主要用于讲解在训练数据线性不可分时如何定义支持向量机的最优化问题。
二、开源的魅力编译OpenCV源代码
一下载安装CMake 官网下载地址https://cmake.org/ 打开点击快捷方式或进入安装路径D:\software\CMake\bin找到cmake-gui.exe运行。
二使用CMake生成OpenCV源代码工程的解决方案
点击Browse Source按钮选择D:/software/opencv/sourcesopencv安装时源代码的存储路径点击Browse Build按钮选择D:/programming/opencv/Solution(自定义路径)点击Configure按钮 默认选择对应版本的Visual Studio编译器默认就行我这里没有vs10,会报错待解决 点击finish就会生成对应的VS2010的sln解决方案。 看到进度条读到最后出现Configuring done就完成了。
第二次Configure。再次单击Configure按钮单击Generate。生成最终的解决方案出现Configuring done就完成了。解决方案放在第二步我们选择的自定义路径下。
三编译OpenCV源代码
打开OpenCV.sln解决方案包含67个项目的解决方案 可以点击任意一个我们感兴趣的项目查看源代码并调试。
三、“opencv.hpp”头文件认知
opencv.hpp包含了OpenCV各模块的头文件。
#ifndef __OPENCV_ALL_HPP__
#define __OPENCV_ALL_HPP__#include opencv2/core/core_c.h
#include opencv2/core/core.hpp
#include opencv2/flann/miniflann.hpp
#include opencv2/imgproc/imgproc_c.h
#include opencv2/imgproc/imgproc.hpp
#include opencv2/photo/photo.hpp
#include opencv2/video/video.hpp
#include opencv2/features2d/features2d.hpp
#include opencv2/objdetect/objdetect.hpp
#include opencv2/calib3d/calib3d.hpp
#include opencv2/ml/ml.hpp
#include opencv2/highgui/highgui_c.h
#include opencv2/highgui/highgui.hpp
#include opencv2/contrib/contrib.hpp#endif四、命名规范约定
代码一定要规范
五 、argc与argv参数疑惑实际中不怎么使用
一初识main函数中的argc和argv
arg指的是参数
ragc为证书用来统计运行程序时送给main函数的命令行参数的个数*argv[]为字符串数组用来存放指向字符串参数的指针数组每一个元素指向一个参数。
//官方最标准的main函数写法
int main(int argc,char *argv[])
{
const char* imagename argc 1 ? argv[1] : lena.jpg;
......
}二argc,argv的具体含义
int main(int argc,char *argv[],char **env)参数1int类型的argc为整型。用来统计运行程序时送给main函数的命令行参数的个数在Visual Studio中默认值为1。 参数2char*类型的argv[]为字符串数组用来存放指向字符串参数的指针数组各成员含义如下
argv[0]指向程序运行的全路径名argv[0]指向在DOS命令行中执行程序名后的第一个字符串argv[0]指向执行程序名后的第二个字符串argv[0]指向执行程序名后的第三个字符串argv[argc]为NULL
参数3char **类型的env为字符串数组。很少用。
三Visual Studio中main函数的几种写法说明
1、【写法1】返回值为整型带参的main函数
int main(int argc,char** argv)
{//函数体内使用或不使用argc和argv都可行......return 1;
}2、【写法2】返回值为整型不带参的main函数
int main(int argc,char** argv)
{//函数体内使用了argc或argv......return 1;
}3、【写法3】返回值为void且不带参的main函数
int main()
{......return 1;
}六 、格式输出函数printf()简析
一格式输出printf()函数
int printf(const char *format,...);
即
int printf(格式控制字符串,输出表列);printf()函数用于指定输出格式。具体用法如下图所示 二示例程序printf函数的用法示例
示例
#include opencv2\opencv.hpp
using namespace cv;void main()
{int a 66,b 88;printf(\n\t%d,%d\n,a,b); //输出十进制整型printf(\n\t%06d,%06d\n,a,b); //输出6位十进制整型printf(\n\t%c,%c\n,a,b); //按字符输出printf(\n\t结果为a%d,b%d,a,b); //可以配合其他内容一同输出getchar(); //等待输出任意字符结束
}结果图 七、智能显示当前使用的OpenCV版本
#include opencv2\opencv.hpp
using namespace cv;int main()
{printf(\t当前使用的OpenCV版本为 OpenCV %s,CV_VERSION);getchar();
}最后的最后很喜欢书中的一句话
授之以鱼更授之以渔