一.OpenCV接口调用示意 介绍了OpenCV3中提取图像角点特征的函数: # coding=utf- import cv2 import numpy as np '''Harris算法角点特征提取''' img = cv2.imread('chess_board.png') gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) gray = np.float32(gray) # {标记点大小,敏感度(~,越小越敏感)} # OpenCV函数cv2.corne…
霍夫变换常用于检测直线特征,经扩展后的霍夫变换也可以检测其他简单的图像结构. 在霍夫变换中我们常用公式 ρ = x*cosθ + y*sinθ 表示直线,其中ρ是圆的半径(也可以理解为原点到直线的距离),θ是直线与水平线所成的角度(0~180°),确定了它们,也就确定一条直线了,和下图略有出入的是实际的原点定在图片左上角. 原理是对于输入的二值图像中的像素点(有值的),按照步长(参数三参数四对应rho和theta的步长)分别计算出每个点上的所有可能的直线.记录下每条直线经过的点数(即存在多个点计…
一.原理简介 边缘检测原理 - Sobel, Laplace, Canny算子 X方向Sobel算子 -1 -2 -1 0 0 0 1 2 1 Y方向Sobel算子 -1 0 1 -2 0 2 -1 0 1 Laplace算子 1 1 1 1 -8 1 1 1 1 Canny 边缘检测算子 高斯滤波器平滑图像 一阶差分偏导计算梯度值和方向 对梯度值不是极大值的地方进行抑制 用双阈值连接图上的联通点 通俗说一下, 1.用高斯滤波主要是去掉图像上的噪声. 2.计算一阶差分,OpenCV 源码中也是用…
一.滤波器实现 我们实现这样一个基于拉普拉斯算子的滤波器核心,并使用它进行滤波,这可以做到锐化图像的效果, 0 -1 0 -1 5 -1 0 -1 0 首先我们完全手动的进行滤波,依赖指针操作, void sharpen(const cv::Mat &image, cv::Mat &result) { result.create(image.size(), image.type()); std::cout << image.size() << std::endl;…
一.遍历图像实现色彩掩码 本节我们实现这样一个算法,我们指定某种颜色和一个阈值,根据输入图片生成一张掩码,标记符合的像素(和指定颜色的差异在阈值容忍内). 源代码如下,我们使用一个class完成这个目标,其指定了两种构建函数,并通过逐像素扫描的形式生成掩码(process成员函数).另外,本class做了仿函数处理(operator成员函数),类似于python中的__call__方法,可以直接调用实例像函数一样进行处理.注意迭代器的使用,需要++it而非 class ColorDetector…
Mat属性方法介绍:OpenCV2:Mat属性type,depth,step 推荐一套OpenCV入门博客:OpenCV探索 一.Mat Mat类用于表示一个多维的单通道或者多通道的稠密数组.能够用来保存实数或复数的向量.矩阵,灰度或彩色图像,立体元素,点云,张量以及直方图(高维的直方图使用SparseMat保存比较好).简而言之,Mat就是用来保存多维的矩阵的. Mat存储 Mat分为头信息和数组body两部分,头信息声明后即创建,body需要调用create方法或者其他方法后才划取内存创建.…
在opencv中,摄像头和视频文件并没有很大不同,都是一个可以read的数据源,使用cv2.VideoCapture(path).read()可以获取(flag,当前帧),对于每一帧,使用图片处理函数即可. 调用摄像头并记录为文件: # 摄像头读取并写入文件 cameraCapture = cv2.VideoCapture(0) # 获取摄像头对象 fps = 30 size = (int(cameraCapture.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cam…
cv2和numpy深度契合,其图片读入后就是numpy.array,只不过dtype比较不常用而已,支持全部数组方法 数组既图片 import numpy as np import cv2 img = np.zeros((3, 3), dtype=np.uint8) # numpy数组使用np.uint8编码就是cv2图片格式 print(img, '\n', img.shape, '\n') img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) # 单通道转化…
背景: > 之前做 OGG 时,被 OGG的配置 恶心到了.(OGG是啥,这里就不解释了) > 总之就是一个 控制台程序,总是得手动执行一堆命令,每次都得输入 —— 实在是打字打累了. > 于是,搜索:Shell控制输入输出 的代码 —— 没有找到完美的.[部分网友给出的往往是:一堆命令,得到全部输出 —— 而我要的是:输入一行命令就得到对应的输出] 源码: using System; using System.Collections.Generic; using System.Diag…
OpenCV可以检测图像的主要特征,然后提取这些特征.使其成为图像描述符,这类似于人的眼睛和大脑.这些图像特征可作为图像搜索的数据库.此外,人们可以利用这些关键点将图像拼接起来,组成一个更大的图像,比如将许多图像放在一块,然后形成一个360度全景图像. 这里我们将学习使用OpenCV来检测图像特征,并利用这些特征进行图像匹配和搜索.我们会选取一些图像,并通过单应性,检测这些图像是否在另一张图像中. 一 特征检测算法 有许多用于特征检测和提取的算法,我们将会对其中大部分进行介绍.OpenCV最常使…