树莓派Opencv张正友棋盘标定法
make、Makefile
cc = gcc #最简易的makefile文件,这个可以用来进行文件之间的简易构建和链接,生成我们所需要的执行文件;
prom = calc
deps = $(shell find ./ -name "*.h")
src = $(shell find ./ -name "*.c")
obj = $(src:%.c=%.o) #将所有的.c文件替换成.o文件。 $(prom): $(obj)
$(cc) -o $(prom) $(obj) %.o: %.c $(deps)
$(cc) -c $< -o $@ clean:
rm -rf $(obj) $(prom)
objects = main.o kbd.o command.o display.o/
insert.o search.o files.o utils.o edit: $(objects)
cc -o edit $(objects) main.o : defs.h
kbd.o : defs.h command.h
command.o : defs.h command.h
display.o : defs.h buffer.h
insert.o : defs.h buffer.h
search.o : defs.h buffer.h
files.o : defs.h buffer.h command.h
utils.o : defs.h .PHONY : clean
clean:
rm edit $(objects) #首先这个objects相当于一个宏定义来的,然后.o文件的后面可以省去.c文件,因为在makefile执行时,它是自动寻找依赖项,所以它会自动添加.c文件到.o的后面。 #简单版的makefile objects = main.o kbd.o command.o display.o/
insert.o search.o files.o utils.o edit: $(objects)
cc -o edit $(objects) $(objects) : defs.h
kbd.o command.o files.o : command.h
display.o insert.o search.o files.o : buffer.h .PHONY : clean
clean:
rm edit $(objects) #整个执行操作是:首先我们是根据文件的存活时间来判定的,首先.edit文件是最总的运行文件,它是最新的,.o文件时其次的执行文件,.c文件时依赖项。我们就是要通过这个makefile进行操作他们之间的关系,.c生成.o这个叫做编译(complie),再把大量的.o合成运行文件这个叫做链接(link)。 #工作方式:GNU的make工作时的运行步骤入下:(想来其他的make也是相似)
#、读入全部的Makefile。
#、读入被include的其他Makefile。
#、初始化文件里的变量。
#、推导隐晦规则,并分析全部规则。
#、为全部的目标文件创建依赖关系链。
#、依据依赖关系,决定哪些目标要又一次生成。
#、运行生成命令。 #规则的语法:
#targets : prerequisites
# command
#......
#或者是这样:
#targets : prerequisites
# command
#......
CMake、CMakefile
#PROJECT_SOURCE_DIR目录下的Cmakefile文件
#树目录如下图,首先bin是执行文件生成的地方,build是Makefile生成的地方,编写完CMakefile文件之后,就会去build目录下cmake .. make,就会生成文件,doc文件时用来存放文档的,image就是照片的地方,include是头文件,譬如自己编写的头文件main.h之类的,lib就是我们生成链接库的地方,src就是我们的源文件的地方。 #PROJECT_SOURCE_DIR根目录会有一个CMakeLists.txt文件,SRC目录下面也会有一个CMakeLists.txt文件,需要我们自己分别编写; #这个是再项目根目录下的CMakeLists.txt
#cmake verson
CMAKE_MINIMUM_REQUIRED(VERSION 3.7.)
#project name
PROJECT(main)
#head file path 头文件目录 #source directory 源文件目录
AUX_SOURCE_DIRECTORY(src DIR_SRCS) #使用了默认的g++指定编译器
SET(CMAKE_CXX_COMPILER "g++")
#指定编译选项
SET(CMAKE_BUILD_TYPE Debug)
#指定了编译目录
SET(PROJECT_BINARY_DIR ${PROJECT_SOURCE_DIR}/build) #指定了最总生成执行文件的目录
SET(EXEUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
#制定了生成链接库的目录
SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
#指定了包含的头文件的目录
INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/include)
#动态链接库或静态链接库的搜索路径,相当于指定gcc的L参数
LINK_DIRECTORIES(${PROJECT_SOURCE_DIR}/lib)
#添加子目录,这样就可以进入源码文件src目录可以继续构建
ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/src) ###但是遇到了一个问题就是不知道为什么生成的main是再/build/src/里面. #根目录下的SRC里面的CMakeLists.txt ADD_EXECUTABLE(main main.cpp) #增加OPENCV的依赖
FIND_PACKAGE(OpenCV 3.3. REQUIRED)
#指定OPENCV的头文件包含
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS}) #动态链接到OPENCV的依赖库里面
TARGET_LINK_LIBRARIES(main
${OpenCV_LIBS}
)
#指定生成的链接的地方
SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) #指定执行文件生成到bin中
#SET(EXECUTABLA_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) #生成静态库
ADD_LIBRARY(static_demo STATIC main.cpp) SET_TARGET_PROPERTIES(static_demo PROPERTIES OUTPUT_NAME "static") #生成动态库
ADD_LIBRARY(shared_demo SHARED main.cpp) SET_TARGET_PROPERTIES(shared_demo PROPERTIES OUTPUT_NAME "shared")
树莓派Opencv张正友棋盘标定法的更多相关文章
- Opencv 张正友相机标定傻瓜教程
注: 程序所用的OpenCV版本是 2.4.10 ,3.0以上的版本可能会有不同 先贴一下完整的工程代码: #include "opencv2/core/core.hpp" #in ...
- 张正友相机标定Opencv实现以及标定流程&&标定结果评价&&图像矫正流程解析(附标定程序和棋盘图)
使用Opencv实现张正友法相机标定之前,有几个问题事先要确认一下,那就是相机为什么需要标定,标定需要的输入和输出分别是哪些? 相机标定的目的:获取摄像机的内参和外参矩阵(同时也会得到每一幅标定图像的 ...
- OpenCV实现张正友相机标定源代码
本源代码基于VC++和opencv Opencv2.4.13.6版本开发,实现张正友相机标定源代码,资源包括完整源代码和12张棋盘图片,完美运行.Opencv2.4.13.6安装包下载地址:http: ...
- SLAM入门之视觉里程计(6):相机标定 张正友经典标定法详解
想要从二维图像中获取到场景的三维信息,相机的内参数是必须的,在SLAM中,相机通常是提前标定好的.张正友于1998年在论文:"A Flexible New Technique fro Cam ...
- 企业管理系统——第三周需求&原型改进_张正浩,黄锐斌
企业管理系统——需求&原型改进,架构设计,测试计划 组员:张正浩,黄锐斌 一.需求&原型改进 1.给目标用户展现原型,与目标用户进一步沟通理解需求 我们的目标用户是公司管理员 场景:随 ...
- 【OpenCV-ANN神经网络自动驾驶】树莓派OpenCV神经网络自动驾驶小车【源码+实物】
没错!这个是我的毕业设计!!! 整个电子信息学院唯一一个优秀毕业设计 拿到这里炫耀了 实物如下: 电脑端显示效果: 自动驾驶实现过程: 1. 收集图像数据.建立局域网,让主机和Raspberry Pi ...
- 从零开始一起学习SLAM | 神奇的单应矩阵
小白最近在看文献时总是碰到一个奇怪的词叫“homography matrix”,查看了翻译,一般都称作“单应矩阵”,更迷糊了.正所谓:“每个字都认识,连在一块却不认识”就是小白的内心独白.查了一下书上 ...
- OpenCV相机标定和姿态更新
原帖地址: http://blog.csdn.net/aptx704610875/article/details/48914043 http://blog.csdn.net/aptx704610875 ...
- opencv 61篇
(一)--安装配置.第一个程序 标签: imagebuildincludeinputpathcmd 2011-10-21 16:16 41132人阅读 评论(50) 收藏 举报 分类: OpenCV ...
随机推荐
- [20180604]在内存修改数据(bbed).txt
[20180604]在内存修改数据(bbed).txt --//以前曾经做过在内存修改数据,通过oradebug poke命令修改内存信息,相关链接:--//http://blog.itpub.net ...
- [20171213]john破解oracle口令.txt
[20171213]john破解oracle口令.txt --//跟别人讨论的oracle破解问题,我曾经提过不要使用6位字符以下的密码,其实不管那种系统低于6位口令非常容易破解.--//而且orac ...
- python第五十三天--进程,协程.select.异步I/O...
进程: #!usr/bin/env python #-*-coding:utf-8-*- # Author calmyan import multiprocessing,threading,time ...
- EntityFramework Code-First 简易教程(四)-------继承策略
在前篇CodeFirst类型约定中,我们在数据库中为每一个模型类创建一个表,但是有个问题,我们可以设计出带继承关系的模型类,即面向对象编程既有“has a”(表示类继承)也有“is a”(表示类包含) ...
- Alpha冲刺!Day13 - 小结
Alpha冲刺!Day13 - 小结 各个成员今日完成的任务 今天团队极限编程12小时,从早上九点要求每个人给出一张电脑全屏截图以示开始干活,每两小时汇报进度确认已经做了什么.现在在做什么. 各节点列 ...
- 使用JavaConfig和注解方式实现零xml配置的Spring MVC项目
1. 引言 Spring MVC是Spring框架重要组成部分,是一款非常优秀的Web框架.Spring MVC以DispatcherServlet为核心,通过可配置化的方式去处理各种web请求. 在 ...
- arcgis api for javascript中使用proxy.jsp
当我们使用arcgis api for javascript 查询arcgis服务时,如果查询的参数很长时,通过get方式提交会查询不到结果,因为get方式提交的参数有长度限制,需要通过代理的方式使用 ...
- 描述整体程序的 app
一个小程序主体部分由三个文件组成,必须放在项目的根目录,如下 app.js文件 App() 函数用来注册一个小程序.接受一个 object 参数,其指定小程序的生命周期函数等.object参数说明如下 ...
- 洛谷P1223
#include <iostream>#include <algorithm>#include <cstdio>using namespace std;int b[ ...
- UVA11853-Paintball(对偶图)
Problem UVA11853-Paintball Accept:229 Submit:1830 Time Limit: 3000 mSec Problem Description You are ...