![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenCV
文章平均质量分 80
Quentin_HIT
哈工大研二学生,视觉SLAM/视觉定位/多传感器融合定位方向,不定期分享一些学习笔记和心得。
展开
-
【OpenCV】OpenCV/Python遍历像素点操作运行效率低的解决方法
1. 背景该问题源于实验室项目,里面涉及图像处理的相关操作。在其中利用重心法检测二值化目标的圆心时,发现运行效率很低,给图像的精度测试带来了很大的麻烦。因此,考虑将该部分改进,以提高重心法检测的速度。2. 传统重心法检测# --重心法检测圆心--sum_x = 0sum_y = 0cnt_x = 0cnt_y = 0for i in range(blank_bg.shape[0]): for j in range(blank_bg.shape[1]): ...原创 2021-12-12 19:50:00 · 3866 阅读 · 0 评论 -
【OpenCV】命令行安装OpenCV-Python的方法
pip install opencv-python==4.1.2.30 -i https://pypi.tuna.tsinghua.edu.cn/simplepip install opencv-contrib-python==4.1.2.30 -i https://pypi.tuna.tsinghua.edu.cn/simple原创 2021-12-03 09:07:22 · 7384 阅读 · 2 评论 -
【OpenCV】OpenCV/C++利用RANSAC算法减少SIFT特征误匹配
#include "opencv2/nonfree/nonfree.hpp" #include "opencv2/nonfree/features2d.hpp" #include "opencv2/legacy/legacy.hpp"#include <opencv2/opencv.hpp>#include <iostream> using namespace cv; using namespace std; int main() { ..原创 2021-11-16 11:59:29 · 2035 阅读 · 2 评论 -
【OpenCV】OpenCV基础教程(11)—— HighGUI图形用户界面
11. HighGUI图形用户界面11.1 滑动条的创建和使用11.1,1 创建滑动条:createTrackbar()函数createTrackbar 函数用于创建一个可以调整数值的滑动条:int cv::createTrackbar(const cv::String &trackbarname, const cv::String &winname, int *value, int count, cv::TrackbarCallback onChange = (cv::Trackb原创 2021-11-10 09:43:21 · 1608 阅读 · 0 评论 -
【OpenCV】OpenCV基础教程(10)—— 频率域滤波
10. 频率域滤波10.1 概述及原理详解频率域滤波的步骤如下:10.2 低通滤波低通滤波器越靠近中心点位置的值越接近于 1,越远离中心位置的值就越小于 1,与傅里叶变换相乘后,相当于保留了低频信息,消弱或者移除了高频信息。10.2.1 理想低通滤波器假设 𝐻、𝑊 分别代表图像快速傅里叶变换的高、宽。傅里叶谱的最大值(中心点)的位置在 (maxR, maxC)。radius 代表截断频率。𝐷(𝑟, 𝑐) 代表 (𝑟, 𝑐) 到中心位置的距离。ilpFilter(r,c)={1D(r,c)≤r原创 2021-11-10 00:09:23 · 3277 阅读 · 1 评论 -
【OpenCV】OpenCV基础教程(9)—— 傅里叶变换
9. 傅里叶变换9.1 二维离散的傅里叶(逆)变换9.1.1 离散傅里叶变换二维离散傅里叶变换的原理略,具体见书P346。OpenCV实现傅里叶(逆)变换的函数:void cv::dft(cv::InputArray src, cv::OutputArray dst, int flags = 0, int nonzeroRows = 0)src:输入矩阵,只支持 CV_32F 或者 CV_64F 的单通道或双通道矩阵dst:输出矩阵flags:用于说明是傅里叶变换还是傅里叶逆变换D原创 2021-11-10 00:09:14 · 4395 阅读 · 0 评论 -
【OpenCV】OpenCV基础教程(8)—— 几何形状的检测和拟合
8. 几何形状的检测和拟合8.1 点集的最小外包8.1.1 最小外包矩形OpenCV提供如下函数:cv::RotatedRect cv::minAreaRect(cv::InputArray points)points:接收三种点集形式 第一种:N×2的Mat类型,每一行代表一个点的坐标且数据类型只能是 CV_32S 或者 CV_32F; 第二种:vector<Point>或者vector<Point2f>,即多个点组成的向量; 第三种:N×1的双通道Mat原创 2021-11-10 00:09:05 · 8183 阅读 · 0 评论 -
【OpenCV】OpenCV基础教程(7)—— 边缘检测
7. 边缘检测7.1 Roberts算子Roberts边缘矩阵是图像矩阵与以下两个卷积核分别做卷积:Roberts135=[100−1],Roberts45=[01−10]\mathbf{Robert}{{\mathbf{s}}_{135}}=\left[ \begin{matrix}1 & 0 \\0 & -1 \\\end{matrix} \right],\mathbf{Robert}{{\mathbf{s}}_{45}}=\left[ \begin{matrix}0 &am原创 2021-11-10 00:08:55 · 2515 阅读 · 0 评论 -
【OpenCV】OpenCV基础教程(6)—— 形态学处理
6. 形态学处理6.1 腐蚀图像的腐蚀操作是取每一个位置的矩形邻域内值的**最小值**作为该位置的输出灰度值。这里的邻域不再单纯是矩形结构的,也可以是椭圆形结构的、十字交叉形结构的等。与卷积核类似,它同样需要指定一个锚点。因为取每个位置邻域内的最小值,所以腐蚀后输出图像的总体亮度的平均值比起原图会有所降低,图像中比较亮的区域的面积会变小甚至消失,而比较暗的区域的面积会增大。假设原图像是I\mathbf{I}I,经过腐蚀后的图像是E\mathbf{E}E。因为对图像进行腐蚀操作后缩小了亮度区域的面积,原创 2021-11-10 00:08:35 · 1706 阅读 · 0 评论 -
【OpenCV】OpenCV基础教程(5)—— 阈值分割
5. 阈值分隔5.1 全局阈值分隔全局阈值分割指的是将灰度值大于 thresh(阈值)的像素设为白色,小于或者等于 thresh 的像素设为黑色;或者反过来,将大于 thresh 的像素设为黑色,小于或者等于 thresh 的像素设为白色,两者的区别只是呈现形式不同。OpenCV提供的函数如下:double cv::threshold(cv::InputArray src, cv::OutputArray dst, double thresh, double maxval, int type)原创 2021-11-09 21:00:13 · 5181 阅读 · 0 评论 -
【OpenCV】OpenCV基础教程(4)—— 图像平滑
4. 图像平滑4.1 二维离散卷积4.1.1 卷积定义及矩阵形式1. full卷积III与KKK的二维离散卷积的计算步骤如下:将KKK逆时针旋转180°(上下翻转+左右翻转),得到Kflip{{K}_{\text{flip}}}Kflip;Kflip{{K}_{\text{flip}}}Kflip沿着III按照先行后列的顺序移动,每移动到一个固定位置,对应位置就相乘,然后求和。高为H1H_1H1、宽为W1W_1W1的矩阵III与高为H2H_2H2、宽为W2W_2W2的卷积核KK原创 2021-11-09 20:59:19 · 1263 阅读 · 0 评论 -
【OpenCV】OpenCV基础教程(3)—— 对比度增强
3. 对比度增强3.1 灰度直方图获取灰度直方图的函数如下:void cv::calcHist(const cv::Mat *images, int nimages, const int *channels, cv::InputArray mask, cv::OutputArray hist, int dims, const int *histSize, const float **ranges, bool uniform = true, bool accumulate = false)用法如下:原创 2021-11-09 20:58:05 · 6758 阅读 · 0 评论 -
【OpenCV】OpenCV基础教程(2)—— 几何变换
2. 几何变换2.1 仿射变换2.1.1 仿射变换矩阵仿射变换矩阵:A=[a11a12a13a21a22a23001]\mathbf{A}=\left[ \begin{matrix} {{a}_{11}} & {{a}_{12}} & {{a}_{13}} \\ {{a}_{21}} & {{a}_{22}} & {{a}_{23}} \\ 0 & 0 & 1 \\\end{matrix} \right]A=⎣⎡a11a21原创 2021-11-09 20:57:00 · 292 阅读 · 0 评论 -
【OpenCV】OpenCV基础教程(1)—— 图像数字化
1. 图像数字化1.1 初始OpenCV中的Mat类1.1.1 初始MatMat类的构造函数如下:Mat(int rows, int cols, int type)其中,type代表类型,包括通道数及其数据类型。CV_8UC(n):占1字节的uchar类型CV_8SC(n):占1字节的char类型CV_16UC(n):占2字节的ushort类型CV_16SC(n):占2字节的short类型CV_32SC(n):占4字节的int类型CV_32FC(n):占4字节的float类型CV原创 2021-11-09 20:55:39 · 837 阅读 · 0 评论 -
【OpenCV】OpenCV-C++自己编写函数实现单应性矩阵求解findHomograph和单应性变换warpPerspective
1. 文档结构及相关说明输入图片为src.jpg(待校正图像,待校正目标的四对点需要使用Photoshop等软件预提取)和dst.jpg(利用扫描全能王等得到的校正后的图像,用于提供校正后的图像尺寸),如下所示:src.jpgdst.jpg输出结果见以下帖子(直接调用OpenCV现成函数findHomography和warpPerspective):OpenCV-C++实现单应性矩阵的求解_Quentin的博客-CSDN博客2. 代码实现myfindHomograp...原创 2021-11-03 16:30:59 · 3042 阅读 · 4 评论 -
OpenCV-C++实现单应性矩阵的求解
1. 单应性矩阵的理解1.1 图像层面单应性矩阵H(Homography)约束了同一3D空间点在两个像素平面的2D齐次坐标。\[\left[ \begin{matrix} {{u}_{a}} \\ {{v}_{a}} \\ 1 \\\end{matrix} \right]=\left[ \begin{matrix} {{H}_{1}} & {{H}_{2}} & {{H}_{3}} \\ {{H}_{4}} & {{H}_{5}} &...原创 2021-10-06 17:07:38 · 5410 阅读 · 2 评论 -
OpenCV-C++实现图片信噪比SNR及均方误差MSE的计算
题目读入一幅摄像头图像,记为I 向图像加入高斯噪声,噪声的灰度要和图像的灰度在一个相当的水平上,记为J 计算图像I和J的均方误差 计算图像J的信噪比思路1. 高斯噪声的产生本文是采用Box-Muller算法实现高斯分布的,而要借助Box-Muller算法产生高斯分布必须要有现成的均与分布随机数。由rand()函数可以产生介于0 至 RAND_MAX的随机数。因此,若要得到[0,1]的随机数,则可使用rand() * (1.0 / RAND_MAX)Box-Mulle.原创 2021-10-03 16:45:27 · 6788 阅读 · 0 评论 -
Ubuntu18.04/C++安装OpenCV和opencv-contrib的详细步骤(含boostdesc_bgm.i等缺失文件)
参考链接:Ubuntu18.04安装opencv和opencv_contrib(详细步骤及常见问题解决)安装OpenCV时提示缺少boostdesc_bgm.i文件的问题解决方案(附带百度云资源)boostdesc_bgm.i等缺失文件的下载链接:链接:https://pan.baidu.com/s/1GZ2cisdhBKE9FXEIYfioQg提取码:9356一、下载安装包1. OpenCV的下载打开链接:Releases - OpenCV,下载对应版本的O.原创 2021-09-30 20:58:24 · 2964 阅读 · 3 评论 -
【OpenCV】OpenCV-Python/C++实现简单物体轮廓的识别
要求:识别orange.jpg中的橙子。要求OpenCV内置函数中所有数字形式的参数随机上下波动10%以内不影响识别。orange.jpgPython实现import cv2 as cvimport matplotlib.pyplot as plt# 打开图像filename = './orange.jpg'image = cv.imread(filename)# 将BGR格式转成HSV格式HSV = cv.cvtColor(image, cv.COLOR_...原创 2021-08-27 20:27:03 · 2112 阅读 · 9 评论 -
【OpenCV】OpenCV-Python实现相机标定+利用棋盘格相对位姿估计
功能:实时检测棋盘格相对于摄像头的距离以及位姿。为此主要步骤可分为以下三个步骤:标定图片的拍摄、相机的标定、以及棋盘格位姿的实时解算。原创 2021-08-05 00:14:14 · 17139 阅读 · 17 评论