菜鸡的学习记录,防止需要再次安装又得重新找资料
目录
2 第2步 新建一个VS2015的控制台工程,添加一个空cpp源文件。
1.下载OpenCV并安装
Releases - OpenCVhttps://opencv.org/releases/我安装的3.4.1版本,往后4.0的听说要收费
安装时记好安装地址
2.openVC环境的配置
第一步,配置环境变量。
【设置】——【高级系统设置】——【环境变量】——选中系统变量中的path——【编辑】——新建——输入文件地址
E:\installOpenCV\opencv\build\x64\vc14\bin
E:\installOpenCV\opencv\build\x64\vc15\bin
2 第2步 新建一个VS2015的控制台工程,添加一个空cpp源文件。
如图我的文件名是VS2015_opencv_model
调整为debug X64
右键——属性
(1)配置包含目录。
【通用属性】-【VC++目录】-【包含目录】,再点击【编辑】按钮,添加opencv安装路径下的include文件夹和其子文件下
E:\ installOpenCV\opencv\build\include
E:\installOpenCVopencv\build\include\opencv
E:\ installOpenCVopencv\build\include\opencv2
(2)配置库目录
方法类似包含目录的配置方法,【通用属性】-【VC++目录】-【库目录】,再点击【编辑】按钮,添加安装路径下的X64文件夹里面的lib文件夹
E:\installOpenCVopencv\build\x64\vc14\lib
E:\installOpenCVopencv\build\x64\vc15\lib
(3) 配置链接库
【通用属性】-【连接器】-【输入】-【附加依赖项】,再点击【编辑】按钮。添加安装路径下lib文件夹里面的,lib文件名,opencv3.0的lib文件包含有
release配置不带d的,debug配置带d的
opencv_world341.lib
opencv_world341d.lib
(4)测试
至此opencv就配置好了,以下为一个测试代码
#include "stdafx.h"
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main()
{
Mat image = Mat::zeros(300, 600, CV_8UC3);
circle(image, Point(300, 200), 100, Scalar(25, 110, 288), -100);
circle(image, Point(400, 200), 100, Scalar(255, 123, 127), -100);
imshow("Show Window", image);
waitKey(0);
return 0;
}
//代码出处的链接找不到了,侵删
测试结果:
3 Kinect SDK 2.0 配置
下载地址:
Download Kinect for Windows SDK 2.0 from Official Microsoft Download Center
在【包含目录】中加入【$(KINECTSDK20_DIR)\inc】
在【库目录】中加入【$(KINECTSDK20_DIR)\Lib\x64】
在【链接器】的【输入】里,【附加依赖项】中加入【kinect20.lib】
测试代码
可获得深度数据
// VS2015opencv_model.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <Kinect.h> //Kinect的头文件
#include <iostream>
#include <opencv2\highgui.hpp> //opencv头文件
using namespace std;
using namespace cv;
int main(void)
{
IKinectSensor * mySensor = nullptr;
GetDefaultKinectSensor(&mySensor); //获取感应器
mySensor->Open(); //打开感应器
IDepthFrameSource * mySource = nullptr; //取得深度数据
mySensor->get_DepthFrameSource(&mySource);
int height = 0, width = 0;
IFrameDescription * myDescription = nullptr; //取得深度数据的分辨率
mySource->get_FrameDescription(&myDescription);
myDescription->get_Height(&height);
myDescription->get_Width(&width);
myDescription->Release();
IDepthFrameReader * myReader = nullptr;
mySource->OpenReader(&myReader); //打开深度数据的Reader
IDepthFrame * myFrame = nullptr;
Mat temp(height, width, CV_16UC1); //建立图像矩阵
Mat img(height, width, CV_8UC1);
while (1)
{
if (myReader->AcquireLatestFrame(&myFrame) == S_OK) //通过Reader尝试获取最新的一帧深度数据,放入深度帧中,并判断是否成功获取
{
myFrame->CopyFrameDataToArray(height * width, (UINT16 *)temp.data); //先把数据存入16位的图像矩阵中
temp.convertTo(img, CV_8UC1, 255.0 / 4500); //再把16位转换为8位
imshow("TEST", img);
myFrame->Release();
}
if (waitKey(30) == VK_ESCAPE)
break;
}
myReader->Release(); //释放不用的变量并且关闭感应器
mySource->Release();
mySensor->Close();
mySensor->Release();
return 0;
}
代码出处:第二篇 KinectV2结合opencv入门开发以及一些相关的学习资料_用c++打开并读取kinect v2_baolinq的博客-CSDN博客
效果如图
另在GitHub上找了一个例子,有3个线程,可以抓取颜色、深度和声音,但是配置不上pthread的库,跑不了,感兴趣的可以研究一下,学会了教教我/(ㄒoㄒ)/~~
VS2015的下载地址:
微软 Visual Studio 2015 官方中文正式版完整ISO镜像下载 - 免费社区版/专业版/企业版 - 异次元软件世界