随笔分类 -  OpenCV学习

为了学会视觉算法……
摘要:离散傅里叶变换的运行速度和图片的尺寸有很大关系。图像尺寸是 2,3,5的整数倍时计算速度最快。因此为了加快速度,往往通过添凑新的边缘像素的方法获得最佳图像尺寸。但毕竟计算速度加快的同时需要计算的像素也增多了,所以最优的图像尺寸往往是利用getOptimalDFTSize()函数获得,再用copyMa 阅读全文
posted @ 2018-09-03 09:08 竹夭公子 阅读(209) 评论(0) 推荐(0)
摘要:int getOptimalDFTSize(int vecsize)参数vecsize,向量尺寸,即图片的rows,cols。 void copyMakeBorder(InputArray src, OutputArray dst, int top,int bottom,int left, int 阅读全文
posted @ 2018-09-03 09:07 竹夭公子 阅读(181) 评论(0) 推荐(0)
摘要:如果某个从GitHub或其他博客网站下载的代码上传时间在2014.8.21之前,那么它一定是用OpenCV2.x版本写的。当使用配置了OpenCV3的VS编译的时候代码会有许多错误,解决报错的方法,总结后大概有以下几种。 1.“未声明的标识符”系列问题 新标识符和老标识符有共同之处,如果标识符用“C 阅读全文
posted @ 2018-09-01 14:27 竹夭公子 阅读(1208) 评论(0) 推荐(0)
摘要:操作系统为win10,vs版本为2015或2017,OpenCV选择3.4.0。 一、下载OpenCV3.4.0 https://opencv.org/opencv-3-4.html 解压缩后安装。我安装到了D盘。 之后会看到D盘中有一个名为“opencv”的文件夹。其中的build文件夹(主要是b 阅读全文
posted @ 2018-09-01 11:27 竹夭公子 阅读(2790) 评论(0) 推荐(0)
摘要:离散傅里叶变换(DFT)对一张图像使用傅里叶变换就是将它分解为正弦和余弦两部分,也就是将图像从空间域转换到频域。这一转换的理论基础为:任一函数都可以表示成无数个正弦和余弦函数的和的形式,傅里叶变换就是一个用来将函数分解的工具。 转换之后的频域值是复数,因此显示傅里叶变换之后的结果需要使用实数图形加虚 阅读全文
posted @ 2018-08-31 14:03 竹夭公子 阅读(269) 评论(0) 推荐(0)
摘要:滑动条的创建和使用创建:int createTrackbar(conststring& trackbarname, conststring& winname,int* value, int count, TrackbarCallback onChange=0,void* userdata=0);第一 阅读全文
posted @ 2018-07-18 10:25 竹夭公子 阅读(180) 评论(0) 推荐(0)
摘要:写了个实现摄像头上画线并输出角度的东西……虽然很简单,但脑残的我还是debug了很长时间。 鼠标标识掩膜:实现比较简单……就是新建一个图片,在那个图片中画圆,需要的时候用addweight函数把两张照片融合到一起,但是因为我掌握了直接画圆的技术所以就不需要这个了。 串口通信程序:这个地方似乎要用到C 阅读全文
posted @ 2018-07-18 09:56 竹夭公子 阅读(287) 评论(0) 推荐(0)
摘要:图像旋转:两种情况:绕原点旋转;绕特定点旋转。方法一:用访问像素的方法直接旋转。方法二:乘矩阵。 Mat类型:Mat是一个类,有两个部分:矩阵头和一个指向存储所有像素值的矩阵的指针。Mat A,C;//只创建信息头A=imread("1.jpg");Mat B(A);//使用拷贝构造函数C=A;// 阅读全文
posted @ 2018-07-16 10:13 竹夭公子 阅读(176) 评论(0) 推荐(0)
摘要:今天开始尝试写直升机代码。零号机代码,只考虑鼠标点击等等。暂时不添加拾取框,两台摄像机。设两台摄像机之间距离为2d,高度为Z。故摄像头坐标为(-d,0,0),(d,0,0)。代码思路:读入图片↓畸变矫正↓鼠标点击↓像素坐标转成世界坐标↓转成极坐标↓传给单片机 imshow():void imshow 阅读全文
posted @ 2018-07-16 10:11 竹夭公子 阅读(201) 评论(0) 推荐(0)
摘要:使用外置摄像头时,一定要设置图片格式,即VideoCapture invid(0);invid.set(CV_CAP_PROP_FRAME_WIDTH, 800);invid.set(CV_CAP_PROP_FRAME_HEIGHT, 600);否则会出错。 设置鼠标交互,setMouseCallb 阅读全文
posted @ 2018-07-13 10:33 竹夭公子 阅读(203) 评论(0) 推荐(0)
摘要:https://pan.baidu.com/s/1oHeMG2KahMCKJucHVL-VBg 预备知识见pdf文件。 下面的代码是我在看完书(写完笔记)之后开始写的,所以没必要和图片配套。原文网址(内容有修改):https://blog.csdn.net/xuelabizp/article/det 阅读全文
posted @ 2018-07-12 09:43 竹夭公子 阅读(328) 评论(0) 推荐(0)
摘要:图像腐蚀和膨胀: getStructuringElement函数会返回指定形状和尺寸的结构元素。这个函数的第一个参数表示内核的形状,有三种形状可以选择。矩形:MORPH_RECT;交叉形:MORPH_CORSS;椭圆形:MORPH_ELLIPSE;第二和第三个参数分别是内核的尺寸以及锚点的位置。一般 阅读全文
posted @ 2018-07-12 08:48 竹夭公子 阅读(283) 评论(0) 推荐(0)
摘要:基础知识的复习:首先是需要的头文件:#include<opencv2/opencv.hpp>这次建立一个win32控制台程序,生成的就是多文件项目了。把上面那句话写到stdafx.h里。 应用部分的程序(cpp文件中)中需要写的句子。#include "stdafx.h" using namespa 阅读全文
posted @ 2018-07-10 19:42 竹夭公子 阅读(216) 评论(0) 推荐(0)
摘要:其他基本对象类型: Vec,Scalar,Point,Size,Rect,RotateRect Vec:vec是一个模板类,主要用于数值向量。我们可以定义任何类型的向量和大量的组件: Vec<double,19> myVector; 上面的代码表示我们这一类Vec中数据以double类型存储,每个V 阅读全文
posted @ 2018-03-06 12:26 竹夭公子 阅读(1058) 评论(0) 推荐(0)
摘要:好吧,书本上这一节本来重点讲的是命令行解析器。但书上的代码在我的vs上无法编译通过(课本的编译环境是Cmake)。所以我只好自己写。 在OpenCV新版本中,videocapture类属于videoio子模块。他的参数可以是文件的路径(一个字符串)或者0(表示打开默认相机)。当然也可以设置路径让他打 阅读全文
posted @ 2018-03-02 22:54 竹夭公子 阅读(287) 评论(0) 推荐(0)
摘要:图像:OpenCV中,图像是存储在矩阵格式中的数字序列。图像中的每个点称为像素。每个像素可以存储一个或多个值。 如果图像是二进制图像(只有黑白灰三色),那么只有一个值(0或1)。彩色图像可以存储三个值,这些值可以是介于0到255之间的整数,不过在另一种彩色图像中是0到1的浮点数。 Mat:OpenC 阅读全文
posted @ 2018-03-02 21:14 竹夭公子 阅读(797) 评论(0) 推荐(0)