配置环境

  1. 环境变量 D:\opencv\opencv 3.4\build\x64\vc15\lib

  2. 新建项目

  3. opencv\build\x64\vc15\bin下,复制
    opencv_world440.dll
    opencv_world440d.dll
    opencv_videoio_ffmpeg440_64.dll
    三个动态链接库到
    C:\Windows\System32 路径下:

  4. 项目右键,属性。平台 x64 。配置管理器中修改平台 x64 .

  5. 点击VC ++ 目录, 点击包含目录,点击右边的下拉三角形,点击编辑,将如下目录输入即可,
    opencv\build\include
    opencv\build\include\opencv2
    这表示,VC++ 会从此opencv 算法目录调用。

  6. 点击库目录,点击右边的下拉三角形,点击编辑,将如下目录输入即可,
    E:\opencv\build\x64\vc15\lib

  7. 点击链接器,点击输入,点击附加依赖项,点击右边的下拉三角形,点击编辑,将如下目录输入即可,
    opencv_world440d.lib

  8. 测试一下

# include<opencv2/opencv.hpp>
#include<iostream>using namespace cv;int main(int argc, char** argv) {Mat image = imread("D:\\jupyter-notebook\\opencv\\5.jpg");if (image.empty()) {printf("could not load image...\n");return -1;}//namedWindow("test_opencv_setup", 0);imshow("test_opencv_srtup", image);waitKey(0);return 0;}

opencv 初探

头文件

  • #include “opencv2/core/core.hpp” 结构和数学运算
  • #include“openc2/flann/minflann.hpp" 最近邻搜索匹配函数
  • #include "opencv2/imporc/imgproc.hpp” 图像处理函数
  • #include “opencv2/vide/photo.hpp" 操作和回复照片的相关算法
  • #include “opencv2/video/video.hpp” 视觉追踪和背景分割
  • #include “opencv2/features2d/features2d.hpp” 用于追踪的二维特征
  • #include “opencv2/objdetect/objdetect.hpp” 级联分类器, latent SVM 分类器,HoG特征和平面片检测器
  • #include “opencv2/calib3d/calib3d.hpp” 校准以及双目视觉
  • #include “opencv2/ml/ml.cpp” 机器学习,聚类, 和模式识别有关
  • #include “opencv2/highgui/highgui.hpp” 显示,滚动条,鼠标操作以及输入输出
  • #include “opencv2/contrib/contirb.hpp” 皮肤检测,模糊的Mean-shift 追踪,spin image 算法和自相似特征等。
  • 还有包括了全部的 #include “opencv2/opecv.hpp”

从一个小程序开始:

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <fstream>using namespace std;int g_slider_position = 0;
int g_run = 1, g_dontset = 0; //g_run=1 就是每次前进一帧,g_dontset 就是手动拖动滚动条时保持之前的模式
cv::VideoCapture g_cap;void onTrackbarSlide(int pos, void*) {g_cap.set(CV_CAP_PROP_POS_FRAMES, pos);          // 回调函数if (!g_dontset) g_run = 1;          g_dontset = 0;
}void main()
{cv::namedWindow("Example 2-4", cv::WINDOW_AUTOSIZE);g_cap.open("D:\\opencv\\sources\\samples\\data\\vtest.avi");int frames = (int)g_cap.get(CV_CAP_PROP_FRAME_COUNT);       // 读取视频的帧数,宽高int tmpw = (int)g_cap.get(CV_CAP_PROP_FRAME_WIDTH);int tmph = (int)g_cap.get(CV_CAP_PROP_FRAME_HEIGHT);cout << "Video has " << frames << " frames of dimensions("<< tmpw << ", " << tmph << ")." << endl;cv::createTrackbar(            // 创建滚动条"Position","Example 2-4",&g_slider_position,frames,onTrackbarSlide);cv::Mat frame;for (;;) {if (g_run != 0) {g_cap >> frame;if (frame.empty()) break;int current_pos = (int)g_cap.get(CV_CAP_PROP_POS_FRAMES);   // 当前的帧数g_dontset = 1;cv::setTrackbarPos("Position", "Example 2-4", current_pos);cv::imshow("Example 2-4", frame);g_run -= 1;}char c = (char)cv::waitKey(10);if (c == 's') { // single step                  g_run = 1;cout << "Single step, run = " << g_run << endl;}if (c == 'r') { // run modeg_run = -1;cout << "Run mode, run = " << g_run << endl;}if (c == 27) break;}
}

c艹的代码量真多啊,没啥功能就要那么多行。

作为刚入c++ 深坑的萌新记录一下
argc和argv参数在用命令行编译程序时有用。main( int argc, char* argv[], char **env ) 中
- 第一个参数,int型的argc,为整型,用来统计程序运行时发送给main函数的命令行参数的个数,在VS中默认值为1。
- 第二个参数,char*型的argv[],为字符串数组,用来存放指向的字符串参数的指针数组,每一个元素指向一个参数。各成员含义如下:
- argv[0]指向程序运行的全路径名
- argv[1]指向在DOS命令行中执行程序名后的第一个字符串
- argv[2]指向执行程序名后的第二个字符串
- argv[3]指向执行程序名后的第三个字符串
- argv[argc]为NULL

命令行中的使用就是(WIN):"opencv c艹.exe" D:\opencv\sources\samples\data\vtest.avi

opencv的数据类型

  1. 固定向量类 Vec,用于已知维度的小型向量。相当于列为1 的Matx<> ,cv::Vec{2,3,4,6}{b,s,w,i,f,d}, w 无符号短整型。b 无符号字符型,s 短整型,i int ,f,d 浮点类型

    可以方便的通过单个数来索引。

  2. Point 类,基本的模板结构表示任何类型的点(二维三维)。一般通过cv::Point2i cv::Point3f 这样的类型别名实例化,(b无符号字符,s 短整型,i 32位整形,f 32位浮点数,d 64位浮点数,可以转换成固定向量类(Vec)。

  3. Scalar类,相当于(cv::Vec<double,4>) ,成员都是双精度浮点数,继承了向量代数操作,成员访问函数[] ,和固定向量类的特性。使用的时候不一定传入四个值吧。。。

  4. size 类,cv::Size. cv::Size2i. cv::Size2f ,前面两个是一样的。

    与point 相比,这个的成员是 width, height ,point 中是 x,y 。而且也不能转换成Vec。但point ,Vec可以转化成 size类 。

  5. Rect 类 包含了point 的成员 x,y (左上角坐标)和size的宽高。

  6. RotatedRect 类,包含一个 Point2f,(中心点) Size2f and float 角度,


7. 固定矩阵 cv::Matx<> ,维度要已知。适用于小型数组(2*2,3*3),cv::Matx{1,2,…{1,2,…}{f,d} ,数字为1 - 6 。



8. 复数类,

9. cv::TermCriteria 类,封装终止条件的(达到迭代次数,达到指定精度)TermCriteria( int type, int maxCount, double epsilon );type:cv::TermCriteria::COUNT or TermCriteria::EPS or | 一起使用

  1. Range类,确定一个连续序列, cv::Range( int start, int end ). Range rng(0,4); rng.size(); rng.empty();

  2. Ptr 模板和垃圾收集,就是指针p 的实例消失后,自动清除这个对象。cv::Ptr<Matx33f> p( new cv::Matx33f ), or cv::Ptr<Matx33f> p = makePtr<cv::Matx33f>() 。得到一个智能指针 p, 可以像标准指针一样使用。但可以记录指向这个实例的个数,当指向实例的指针都释放了,这个实例就可以自动调用析构自动释放。
    addref();release() 增加减少计数,empty() 判断指针释放指向了一个已经倍释放的对象,确定指向的对象是否为NULL 。delete_obj() 引用计数清零时自动执行的函数。

template<> inline void cv::Ptr<FILE>::delete_obj() {fclose(obj);
}
{cv::Ptr<FILE> f(fopen("myfile.txt", "r"));if(f.empty())throw ...; // Throw an exception, we will get to this later on...fprintf(f, ...);...
}  // 出来后,f 离开范围计数变0,然后自动调用fclose() .-0
  1. Exception 类和异常处理,继承自std::exception
  2. cv::DataType<> 模板,再opencv函数中需要传递特定数据类型的概念时 ,就创建一个datatype<>类型的对象。传递的实际上是这个模板的特化。看不懂,等以后用上了再研究吧。。。
template<typename _Tp> class DataType
{typedef _Tp value_type;typedef value_type work_type; typedef value_type channel_type;    // 包含了四个typedef 声明typedef value_type vec_type;enum {generic_type = 1,depth = -1,channels = 1,fmt = 0,type = CV_MAKETYPE(depth, channels)};
};

另一个作用是与更复杂的结构实现交互,比如允许以传入数据类型无关的方式实现算法。

  1. 工具函数,包含数学操作,测试,错误生成,内存和线程处理,优化等其他工具。


    计数事件时间,前后调用 cv::getTickCount() ,然后相减除以 cv::getTickFrequency() 的返回值。

opencv c艹:配置环境,opencv的数据类型相关推荐

  1. OpenCV初探 —— VS2019配置环境

    1)创建一个C++项目 2)打开"工具" -> "NuGet包管理器"-> "管理解决方案的NuGet程序包" 3)浏览中搜索o ...

  2. YOLOv4从配置环境到跑通代码的小白教程

    一直以来都只是看论文和网上的一些纯文字的讲解,但从来没有实操过,非常想自己跑一下代码,看一下算法的整个实现过程,于是就有了这次尝试. 系统环境介绍 windows 10 NVIDIA  GeForce ...

  3. windows下opencv安装及配置(vs2010环境)

    opecv下载 前往官方下载地址 https://opencv.org/releases/ opencv安装及配置 解压,会得到一个opencv文件夹,可将提取出的文件移动到任意位置,我将其放在F盘. ...

  4. 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置

    1.下载和安装OpenCV SDK VS2010不用说,肯定都安装了吧.来说说当前最新的OpenCV版本2.4.8(2014年2月24日),2.4.9 (2014年4月)的下载和安装.与其说是安装,不 ...

  5. Windows10 + Visual Studio 2017 + CMake +OpenCV编译、开发环境配置及测试

    由于最近需要使用OpenCV,本人需要在自己的PC上使用OpenCV,因此最近一直在研究如何使用Visual Studio编译OpenCV源代码并搭建开发环境,折腾了很长时间,查阅了很多相关资料,终于 ...

  6. 【转】【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置

    本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接: http://blog.csdn.net/poem_qianmo/article/details/19809337 作者:毛星云(浅 ...

  7. java opencv 开发环境_在IntelliJ IDEA 13中配置OpenCV的Java开发环境

    准备工作: 下载IDEA 13(这里以版本13为例,后面简称IDEA): 下载Java JDK(用于配置基本的Java开发环境): 下载OpenCV 2.4.9(这里以版本2.4.9为例,据这篇文章说 ...

  8. VS2010 + OpenCV 2.4.1 环境配置

    VS2010 + OpenCV 2.4.1 环境配置 (Windows 7 x64 中文旗舰版:Visual Studio 2010 中文旗舰版:OpenCV2.4.1.) 1.用户环境变量(或系统环 ...

  9. 安装OpenCV:OpenCV 2.4.8或OpenCV 2.4.9 +VS 开发环境配置

    因为读研期间的研究方向是图像处理,所以浅墨这段时间闭门研究了很多OpenCV和图像处理相关的知识与内容.眼看自己积累到一定的程度了,于是决定开始开设这个OpenCV系列专栏,总结自己所学,也分享知识给 ...

最新文章

  1. JMeter中的HTTPS套接字错误
  2. Andriod anim scale中的属性介绍以及Animation类的属性
  3. 直播 | 彩云科技CEO袁行远:NLP与冒险游戏研究一览
  4. static函数与普通函数区别
  5. 数据可视化的优势有哪些
  6. 韩国瑜:打造高雄全台首富 3月内完成施政总体检
  7. 灵感专题—2019年优秀网页设计作品赏析#5月
  8. iOS简单人脸检测的实现
  9. hprose java 下载_Hprose Java下载
  10. BF算法(Brute-Force)算法原理及C++实现
  11. 百度搜索框的测试点:
  12. 【沧海拾昧】微机原理:8086/8088中断系统
  13. 资讯类App主流框架(一)
  14. Android Animation动画详解(二): 组合动画特效
  15. ECMALL会员等级,自定义等级类型,自定义等级价格
  16. Artifact在计算机视觉、图像处理领域的意思理解
  17. windows下如何安装及使用github
  18. Java之切割时间段
  19. SqlServer 获取当年时间的时间戳
  20. 数字图像处理之伽马(gamma)变换

热门文章

  1. IDEA调试技巧--看线程生命周期
  2. ubuntu安装命令汇总
  3. mysql时间条件查询
  4. 俩博士相亲,第一反应是查对方发多少SCI,学傻了是一种怎样的体验?
  5. 1h2g云服务器做网站,云服务器1H2G和1H1G的区别
  6. POJ 1061 青蛙的约会 (扩展欧几里得)
  7. php 微信小程序 循环 多选,微信小程序 循环及嵌套循环的使用
  8. 《一切皆是映射:代码的本质》一致性哈希算法(consistent hashing)
  9. arcgis图层的分类
  10. 怎么做前后端分离的个人博客,内部还有仿网易云音乐模块?点进便知!(基于Vue,Springboot+mybatisplus+SpringCloud+ElasticSearch等框架实现)