OpenCV基础
无情的搬砖机器
不求甚解
展开
-
C++ opencv添加汉字
https://blog.csdn.net/weixinhum/article/details/84074594转载 2020-06-05 17:20:43 · 1695 阅读 · 1 评论 -
HoughLinesP参数设置(看完还不会你砍死我!!!)
一、我是个标题1、随便在PPt画个图如下(1602*750):2、测试代码#include<iostream>#include<opencv2/opencv.hpp>using namespace std;using namespace cv;int detect(cv::Mat img) { cv::Mat can_img, gray_img; cv::cvtColor(img, gray_img, CV_BGR2GRAY); cv::Mat ..原创 2020-05-28 15:19:27 · 14859 阅读 · 18 评论 -
opencv各个版本的差异
https://www.cnblogs.com/shine-lee/p/9884551.html转载 2020-05-09 15:48:28 · 1399 阅读 · 0 评论 -
三通道图像转换为一维数组(以及PBYTE * 转Mat)
Mat转换成charchar* 转换为Mathttps://blog.csdn.net/u010185765/article/details/94568783转载 2020-05-07 16:13:01 · 2056 阅读 · 0 评论 -
Opencv的lib和dll使用探索
关于配置VS配置Opencv的方法网上都有了,很多都是在VS环境配置整个opencv库,这样对于学习还是很方便的。下面记录两种另外的做法。一、将opencv库用在自己的项目中1、建立一个简单的工程:#include"opencv2/opencv.hpp"using namespace std;using namespace cv;int main() { Mat img =...原创 2020-05-06 17:01:29 · 5353 阅读 · 0 评论 -
OpenCV库文件介绍
以前都是直接用opencv,都没有仔细研究过,这次把库文件都介绍一下。1、build和source当我们安装完opencv中,你会发现在opencv文件夹中有两个文件夹,build和source,那它们分别是干什么的呢。首先说这两者的关系,sources放的是opencv中的cpp文件,相当于一个工厂,build放的是opencv中的h、hpp、lib文件,相当于一个工具,opencv的开...转载 2020-05-06 13:47:28 · 1296 阅读 · 0 评论 -
EasyPR大致流程
原创 2020-04-26 17:41:00 · 519 阅读 · 0 评论 -
isContinuous()加速访问像素
一、Mat的像素分布形式参考链接:https://blog.csdn.net/farmwang/article/details/48103303?locationNum=5&fps=1单通道:多通道:注意到多通道图像中每列并存三个通道的数据,访问的时候可以按照data[i],data[i+1],data[i+2]的形式访问二、isContinuous()可以...原创 2020-04-18 14:59:40 · 487 阅读 · 0 评论 -
基于Opencv的车流统计和简单测速方法
视频效果 链接: https://pan.baidu.com/s/1kLi0n77Uv9ihMwDCxrQ-EQ 提取码: bmj4车流统计可以参考:https://blog.csdn.net/Li_haiyu/article/details/105453729测速思路:大前提:不超车、不变道...小前提:车距大于等于窄带1-窄带2,条件还是比较苛刻的,但是实际车距也应该比...原创 2020-04-13 16:30:11 · 6924 阅读 · 3 评论 -
设置路面RoI区域
#include <iostream>#include <opencv2/opencv.hpp>#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv;using namespace std;Mat get...原创 2020-04-09 16:54:23 · 873 阅读 · 2 评论 -
Opencv C++表盘读数识别
参考链接:https://blog.csdn.net/XD_Cauthy/article/details/903843051、模板匹配2、寻找RoI3、霍夫变换找圆心和半径4、Canny算子和霍夫直线变换找指针位置5、表盘指针定位6、计算角度并进行读数转换准确的有待提高......原创 2020-04-08 16:59:29 · 2054 阅读 · 0 评论 -
Canny带双滑条找最合适阈值
参考链接:https://www.cnblogs.com/findsnow/p/11838940.html记录一下,蛮好用的#include <opencv2/opencv.hpp>#include <opencv/highgui.h>using namespace cv;using namespace std;//Canny边缘检测//实现用滑动条改...转载 2020-04-08 14:01:28 · 927 阅读 · 0 评论 -
霍夫直线变换返回值Vec4i
参考链接:https://blog.csdn.net/u010189457/article/details/71553436?utm_source=itdadao&utm_medium=referral可以理解为列数组成了X轴,有多少列则图形的X轴处为 img.cols,行数组成了Y轴,有多少行则图形Y轴处为img.rows遍历的顺序喜欢从行再到列即:for(int i =...原创 2020-04-08 11:48:34 · 2153 阅读 · 0 评论 -
OpenCV3 之 显式创建Mat对象的几种方法
指定存储元素的数据类型以及每个矩阵点的通道数:CV_[位数][是否带符号][类型前缀]C[通道数]#include<opencv2\opencv.hpp>#include<iostream>using namespace std;using namespace cv;int main() { // 指定存储元素的数据类型以及每个矩阵点的通道数: ...转载 2020-04-07 11:34:55 · 272 阅读 · 0 评论 -
视频读取与写入
#include <iostream>#include <opencv2/opencv.hpp>#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv;using namespace std; //转换:vo...原创 2020-04-01 18:27:34 · 301 阅读 · 0 评论 -
#转# OpenCV—轮廓操作一站式详解:查找/筛选/绘制/形状描述与重心标注(C++版)
https://blog.csdn.net/iracer/article/details/90260670转载 2020-03-20 16:49:25 · 359 阅读 · 0 评论 -
Roberts、Prewitt、Sobel算子的理解
本来在图像处理中使用的是对二维图像的微分,因为存在x,y两个方向,需要分别对x,y两个方向分别求偏微分。但是对于数字图像来说,一般采用差分来近似一阶导数。参考连接:http://blog.sina.com.cn/s/blog_82a927880102vd9p.html ...转载 2019-01-06 10:48:19 · 4269 阅读 · 0 评论 -
blur和GaussianBlur
一、滤波原理简单介绍1、原理的简单描述 a)黄色的是掩模也就是算子,灰色的是原图。然后看一下像素操作过程:(黄色)算子的9个像素(包括中心红色那个)和(灰色)原图对应位置的像素相乘之和的平均值重新赋给原图中心红色那个像素的过程。 然后掩模按照设定的步长向后移动重复上述过程。b)会发现用3*3大小的掩模处理图像,原图边缘会有一个像素处理不了,如果用5*5大小的掩模处理图像,原图边缘...转载 2019-01-04 17:23:51 · 3734 阅读 · 1 评论 -
基本形状的绘制+放置文字+随机线条
一、基本形状的绘制基本形状主要包括画直线、矩形、椭圆、圆和多边形+文字.实现代码如下:#include<opencv2/opencv.hpp>#include<iostream>using namespace std;using namespace cv;Mat bgImage;const char* drawdemo_win = "draw sha...转载 2019-01-04 16:00:58 · 613 阅读 · 0 评论 -
调整图像的亮度和对比度
简单原理:为输出图像,为输入图像。其中用于调节对比度,增益用于调节亮度实现代码:#include<opencv2/opencv.hpp>#include<iostream>using namespace cv;int main(int argc, char** argv){ Mat src, dst; src = imread("1.jp...转载 2019-01-04 10:33:12 · 1752 阅读 · 0 评论 -
两幅图像的简单运算
两幅图像可以做运算,可以加减乘除和权重叠加操作,前提条件是两幅图像的大小类型都一致,实现代码也很简单,如下:#include<opencv2/opencv.hpp>#include<iostream>using namespace std;using namespace cv;int main(int argc, char** argv){ Mat src...转载 2019-01-04 09:42:06 · 5085 阅读 · 0 评论 -
图像的反色操作
实现代码:#include<opencv2/opencv.hpp>#include<iostream>using namespace std;using namespace cv;int main(int argc, char** argv){ Mat src, gray_src; src = imread("../../lena.jpg"); if ...转载 2019-01-03 21:30:39 · 4049 阅读 · 3 评论 -
利用opencv3标定单目相机(图片标定)和畸变校正
opencv菜鸟一枚,就一个标定搞了许久,哎( ▼-▼ ),写个简单的教程记录一下.本次标定采用自己的标定板拍摄的图片进行标定,基于opencv自带的标定例程实现,我不打算解释各个文件的意思,按照步骤来一遍就明白了。第一步:找到自己安装opencv的路径下:*\opencv3.4\sources\samples\cpp\tutorial_code\calib3d\camera_calibr...原创 2018-09-20 11:20:56 · 6638 阅读 · 3 评论 -
saturate_cast(),Scalar()的用法,Mat创建数组
一、saturate_cast的用法 saturate_cast<uchar>(-1)返回0;saturate_cast<uchar>(256)返回255;saturate_cast<uchar>(1)返回1;saturate_cast()函数的作用相当与labview中的判定范围并强制转换,上界为255,下界为0.二、 Scalar()...转载 2019-01-02 19:54:17 · 804 阅读 · 0 评论 -
矩阵掩模操作实现对比度增强
详情参考:https://blog.csdn.net/qq_25343557/article/details/78654011添加一个计算程序运行时间的代码double t = getTickCount();/* ... ... */double timeconsume = (getTickCount()-t)/getTickFrequency();print("Time con...转载 2019-01-02 21:26:52 · 408 阅读 · 0 评论 -
Mat.ptr进行像素操作
下面主要通过使用Mat.ptr的两种像素操作方法和Mat.at()的像素操作方法的示例来说明时间的运行效率情况一、使用指针操作的方法在图像上画线#include<opencv2/opencv.hpp>#include<iostream>using namespace cv;using namespace std;int main(int argc, c...原创 2019-01-03 11:32:19 · 4991 阅读 · 0 评论 -
形态学基本操作
一、腐蚀和膨胀1、腐蚀膨胀基本概念:跟卷积操作类似,假设有图像A和结构元素B,结构元素在图像A上移动,其中定义B的中心为锚点,计算B覆盖下A的最大值(膨胀)/最小值(腐蚀)的像素值用来替代锚点的像素,其中B可以是矩形,圆,椭圆等任意形状,需要注意腐蚀膨胀操作的图像只能是二值图下面由左图变到右图是膨胀,因为左图中的最大像素是白色,然后将白色像素值作为锚点的像素值下面由左图变到...转载 2019-01-19 10:34:41 · 2833 阅读 · 0 评论 -
图像金字塔上/下采样和高斯不同
高斯金字塔 --降采样拉普拉斯金字塔 --上采样高斯不同(DOG):同一张图像在不同的参数下做高斯模糊之后的结果相减,得到的输出图像,称为高斯不同。API介绍:1、zoom out 缩小,降采样,CV::pyrDown(pyramid金字塔)pyrDown(Mat src, Mat dst, Size(src.cols/2, src.rows/2))缩小为1/22、zoom...转载 2019-02-15 11:22:44 · 1682 阅读 · 0 评论 -
基本阈值操作
1、阈值二值化(threshold binary)2、阈值反二值化(threshold binary Inverted)3、截断(truncate)将超过阈值部分设置为阈值4、阈值取零(threshold to zero)将小于阈值的部分取零5、阈值反取零(threshold to zero Inverted)将超过阈值的部分取零#include <opencv2/op...转载 2019-02-15 13:35:24 · 1819 阅读 · 0 评论 -
自定义线性滤波
Robert 算子:#include <opencv2/opencv.hpp>#include <iostream># include <math.h>using namespace cv;int main(int argv,char** agrc) { Mat src,dst; int ksize = 0; src = imread...转载 2019-02-15 15:12:58 · 246 阅读 · 0 评论 -
边缘处理
3*3卷积操作和有一个边缘像素没有被处理5*5卷积操作和有两个边缘像素没有被处理opencv中的默认处理方法是BORDER_DEFAULT,此外还有下列几种主要使用API copyMakeBorder进行处理#include <opencv2/opencv.hpp>#include <iostream># include <math.h&g...转载 2019-02-15 16:25:12 · 892 阅读 · 0 评论 -
Sobel算子和Scharr算子
代码思路:高斯平滑-转换为灰度图-求梯度x和y-混合xy图像得到振幅图像1、 convertScaleAbs(InputArray src, OutputArray dst,double alpha = 1, double beta = 0)实现功能:在这里使用其求截断的绝对值,同时可以截断超出0和255的部分2、addweighted(src1,weight1,s...转载 2019-02-16 12:59:57 · 2003 阅读 · 0 评论 -
Laplace算子
公式: 代码:#include <opencv2/opencv.hpp>#include <iostream># include <math.h>using namespace cv;int main(int argv, char** agrc) { Mat src, src_gray; src = imread("../....转载 2019-02-16 13:31:21 · 467 阅读 · 0 评论 -
opencv图像增强(直方图均衡化、拉普拉斯、Log、Gamma)
https://blog.csdn.net/dcrmg/article/details/53677739转载 2018-09-30 20:46:00 · 1152 阅读 · 0 评论