OpenCV
文章平均质量分 94
蘇丶
这个作者很懒,什么都没留下…
展开
-
遥感语义分割切图预测之后再拼接
遥感影像在利用语义分割模型进行训练的时候,往往是裁剪成小图进行训练,预测时候时候需要将整张遥感影像切割成小图进行预测,再拼接回去,代码如下:def total_predict(ori_image): h_step = ori_image.shape[0] // 256 w_step = ori_image.shape[1] // 256 h_rest = -(ori_image.shape[0] - 256 * h_step) w_rest = -(ori_image.s原创 2020-11-28 18:21:03 · 4671 阅读 · 7 评论 -
Opencv3——IplImage转Mat
这个问题好头疼,虽然简单,每次都要查,干脆记录一哈IplImage* dstImage;Mat dstImg;dstImg = cvarrToMat(dstImage);原创 2018-07-11 16:11:27 · 688 阅读 · 0 评论 -
无Opencv环境下运行exe
用opencv和C++写了一些程序,但是移植到无opencv环境下就无法使用,最近写了一些图像处理的东西,然后需要.net人员调用我写的东西,他们电脑没有opencv环境配置,因此,就需要把所有opencv动态库和exe文件夹一起拷过去,供他们使用,也就是在无opencv环境下运行exe的问题。一丶代码main.cppint main(int argc, char* argv[])//...原创 2018-08-12 17:25:45 · 1597 阅读 · 0 评论 -
Opencv透视变换——实现不规则四边形转换为规则矩形(以答题卡校正为例)
最近在做答题卡识别方面的工作,但是扫描的答题卡试卷可能会存在一定程度的倾斜,而我们需要提取答题卡有效区域并对其进行校正,实现后续的工作。倾斜答题卡如下图所示: 我们需要对其进行校正:思路如下霍夫圆检测提取圆心所形成的外包矩形利用四个圆心与矩形四角坐标进行校正1.霍夫圆检测OpenCV中HoughCircles函数如下:void HoughCircles(I...原创 2018-08-12 17:33:21 · 13730 阅读 · 0 评论 -
直方图均衡化C++实现
直方图均衡化主要是为了增强图像的对比度,是直方图分布更加均匀概念可以参考其他博客的介绍。主要分为以下几个主要步骤:1.统计每一个灰度级的像素总数2.计算每一个灰度级的概率(P(valueNumber)/piexelNumber,该灰度级像素除以像素总数)3.累积概率,例如:p1=0.01,p2=0.01,p3=0.02,则累积概率为p1 p1+p2 p1+p2+p3;4....原创 2018-10-20 11:41:45 · 3039 阅读 · 0 评论 -
GMM混合高斯背景建模C++结合Opencv实现(内附Matlab实现)
最近在做视频流检测方面的工作,一般情况下这种视频流检测是较复杂的场景,比如交通监控,或者各种监控摄像头,场景比较复杂,因此需要构建背景图像,然后去检测场景中每一帧动态变化的前景部分,GMM高斯模型是建模的一种方法,关于高斯建模的介绍有很多博客了,大家可以去找一找,本篇博客主要依赖于上一个老兄,他用matlab实现了GMM模型,我在其基础上利用C++和OpenCV进行了重写,下面会给出C++代码,希...原创 2018-11-04 21:55:10 · 5774 阅读 · 2 评论 -
基于双目摄像头SGBM视差图的障碍物提取
基于双目摄像头所拍摄的图像进行障碍物提取,主要分为一下四个步骤:1.双目摄像头校正2.视差图提取3.删除无关干扰区域4.提取障碍物轮廓,重心,大小等属性一丶相机标定相机标定有很多方法,光流自标定,棋盘格标定等,张正友标定法,网上可以了解一下,最后得出相机的一系列参数/*事先标定好的相机的参数fx 0 cx0 fy cy0 0 1*///MATLAB...原创 2019-03-13 21:29:47 · 3934 阅读 · 2 评论 -
Opencv实现全景图像展开之柱面展开和透视展开法
有一篇论文介绍了几种展开的方法:《基于3D全景视觉的智能三维立体摄像设备的设计》原始全景图像,我从另一篇博客中下载下来的:展示一下结果:柱面展开图:标题透视展开结果:一 圆柱展开cylinderOnvoid cylinderOn(Mat Src){ int nbottom = 0; int ntop = 0;...原创 2019-03-30 15:56:16 · 9619 阅读 · 4 评论 -
SIFT+RANSAC+反距离加权图像拼接融合(代码记录)
单纯记录一下之前的代码#include <opencv2/imgproc/imgproc.hpp> #include <opencv2/opencv.hpp> #include<opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <cv.h&...原创 2019-04-09 20:25:17 · 1461 阅读 · 0 评论 -
Opencv指针访问每一个像素值
利用opencv访问单通道图像中的像素值#include<opencv2/opencv.hpp>#include<opencv2/core.hpp>#include<iostream>using namespace cv;using namespace std;int main(){ Mat img = imread("MRF_focu...原创 2018-07-01 21:53:05 · 1524 阅读 · 0 评论 -
Tenengrad梯度函数清晰度评价C++实现
先放个代码,原理还没来得及写double Thenengrad(Mat &amp;amp;amp;img){ double Grad_value = 0; double Sx, Sy; for (int i = 1; i &amp;amp;lt; img.rows-1; i++) { //定义行指针 uchar *current_ptr = (uchar*)i...原创 2018-07-01 15:31:18 · 5206 阅读 · 1 评论 -
光场相机重聚焦原理介绍及代码解析
光场相机主要是记录了光线的方向和强度,记录了四维信息,因此具有深度信息,并可以实现重聚焦等对焦和变焦聚焦顾名思义,就是聚焦在某一物体上,由于拍照的时候景深问题,不能使所有物体全部清楚,因此可以通过对焦或者是变焦,聚集在某一平面上,使该平面上的物体清晰。对焦就是改变传感器与主镜头的距离来实现这一过程的 ,而变焦改变的是主镜头的焦距实现这一过程,可以自己琢磨一下就能明白。重聚焦公式...原创 2018-05-25 21:25:02 · 16994 阅读 · 39 评论 -
opencv读取txt文件,并赋值为Mat矩阵
目的:opencv读取txt文件,并将txt文件赋值给Mat矩阵 方法:利用fstream类来完成 关于fstream类请参考下面这篇文章: http://blog.csdn.net/smstone/article/details/661483下面给出代码:// vv.cpp : 定义控制台应用程序的入口点。////#include "stdafx.h" #include <stdio.原创 2017-08-10 13:02:45 · 6377 阅读 · 0 评论 -
如何查看OpenCV函数的源代码
对于从事图像处理相关工作的IT人来说,OpenCV都是或多或少的接触过,在使用其自带函数实现图像处理功能的时候,总有某些时候,我们想着去查看函数的具体实现,一般有如下两种方法来查看其函数实现:第一种 OpenCV都带有这个函数的代码!你在用的时候,选择函数,然后右键选择”go to denifition of cvCalOpticalFlowHS”—>然后就会跳 到定义cvCalOptica转载 2017-09-08 09:53:32 · 6305 阅读 · 0 评论 -
基于SIFT特征的全景图像拼接
基本步骤 1 读入两张图片并分别提取SIFT特征2 利用k-d tree和BBF算法进行特征匹配查找3 利用RANSAC算法筛选匹配点并计算变换矩阵4 图像融合SIFT算法以及RANSAC算法都是利用的RobHess的SIFT源码,前三个步骤RobHess的源码中都有自带的示例。 1 SIFT特征提取直接调用RobHess源码(见RobHess的SIFT源码分析:综述 http://bl转载 2017-08-30 22:36:23 · 4707 阅读 · 1 评论 -
二维坐标排序
在提取光场子孔径图像重要步骤:微透镜中心点排序 由于opencv提取到的微透镜中心坐标不是按从上到下从左到右的顺序,因此需要对中心点进行排序; 这个问题就类似于二维坐标排序: 注:这个图是CSDN论坛上面的一个人问的类似的问题,我拿来用一用。首先我们先看一下取得中心点的坐标 同一行的中心点坐标可能会相差几个数,但是他们是属于同一行,然后在同一行中我们要从左到右给中心点进行排序。 比原创 2017-10-31 19:07:14 · 10109 阅读 · 5 评论 -
特征点匹配---最近邻点比次近邻点
sift特征点直接运用BruteForce方法进行匹配会出现很多错误,因此我们运用最近邻点比次近邻点进行限制,可大大提高特征点匹配的正确率。 即:bestmatchBFMatcher matcher(NORM_L2, false);//定义一个匹配对象 vector<vector<DMatch>> matches2;//定义一个容器用来装最近邻点和次近邻点 vector<DMatc原创 2017-11-09 11:33:54 · 9977 阅读 · 0 评论 -
Opencv如何读取矩阵的某一行(从描述子矩阵中读取某一特征点的描述子)
最近在做特征点匹配的时候从特征点描述子矩阵中某一个特征点的描述子时,也就相当于读取描述子矩阵中的某一行。虽然是一个比较简单的问题,写下来为自己的学习做一个记录,如果能帮到别人更好。Mat descriptor;//描述子矩阵 n行128列descriptor.row(i);//读取矩阵的第i行 这样就可以读取某一个特征点的128位描述子了原创 2017-11-20 21:09:33 · 4575 阅读 · 4 评论 -
C++ ——vector作为函数返回值用法
在实际应用过程中,我们经常需要保存一系列的数据,有可能是一个值,点等,这时我们会用到vector。 如下所示:vector&amp;amp;lt;int&amp;amp;gt;vector&amp;amp;lt;float&amp;amp;gt;与opencv结合使用时可能还会有:vector&amp;amp;lt;Point&amp;amp;gt;,vector&amp;amp;原创 2018-03-07 17:47:24 · 54015 阅读 · 13 评论 -
光场子孔径图像提取(C++实现)
光场光线在一个空间中的分布,不仅可以记录光线的强度,还可以记录光线的方向,光场相机与普通相机的不同之处是微透镜阵列,也就是在主透镜 和传感器之间加入了微透镜阵列,如图所示: 可以通过下面链接了解一下光场: 漫谈计算摄影学 论文: 《Light Field Photography with a Hand-held Plenoptic Camera》——Ren NG概念:1...原创 2018-03-08 14:17:35 · 5378 阅读 · 13 评论 -
Opencv求取连通区域重心
我们有时候需要求取某一个物体重心,这里一般将图像二值化,得出该物体的轮廓,然后根据灰度重心法,计算出每一个物体的中心。 步骤如下: 1)合适的阈值二值化 2)求取轮廓 3)计算重心otsu算法求取最佳阈值 otsu法(最大类间方差法,有时也称之为大津算法)使用的是聚类的思想,把图像的灰度数按灰度级分成2个部分,使得两个部分之间的灰度值差异最大,每个部分之间的灰度差异最小,通过方差的计算来寻原创 2018-03-08 14:49:57 · 11441 阅读 · 8 评论 -
关于opencv中Vector内存释放或者元素清空的问题
目的:在一个循环中,每一次循环结束都要清空这个vector容器以供下一次循环再利用这个vector 方法: vector<double>m1; vector<double>m2; m1.swap(m2); 这样就把m1中的元素转移到了m2中,下面我们来看一下结果示例:vector<double>distance;//创建一个向量distance.push_back(2.236);//往向原创 2017-08-09 10:30:51 · 4703 阅读 · 0 评论