Opencv
Ring__Rain
这个作者很懒,什么都没留下…
展开
-
#include <windows> 和 opencv冲突
因为opencv中有用到一些windows的东西,在先引用opencv,再#include 的时候,会有冲突。解决方法:在最开始引用#include原创 2022-09-20 10:19:52 · 791 阅读 · 1 评论 -
图像配准算法之demons算法
无原创 2022-08-08 09:38:17 · 1483 阅读 · 0 评论 -
手撸模板匹配-C++版本
模板匹配手撸原创 2022-06-30 14:33:42 · 490 阅读 · 0 评论 -
风格迁移-opencv
Mat liu = imread("C:\\Users\\Ring\\Desktop\\liu.jpg", 1); Mat result; stylization(liu, result, 5, 0.6); Mat imgGray, imgColor; pencilSketch(liu, imgGray, imgColor, 5, 0.1f, 0.03f);原创 2021-10-29 14:54:02 · 1980 阅读 · 2 评论 -
OpenCV 高通滤波、低通滤波
高通滤波低频、高频频域滤波代码示例import cv2import numpy as npimport matplotlib.pyplot as plt #1.导入图片并进行傅里叶变换img = cv2.imread('./hanser.jpg',0)f = np.fft.fft2(img)fshift = np.fft.fftshift(f) #2.剔除低频,通高频rows,cols = img.shapecrow,ccol = int(rows/2),int(原创 2021-07-09 10:16:35 · 834 阅读 · 0 评论 -
用opencv的dnn模块做yolov5目标检测
转自:https://blog.csdn.net/nihate/article/details/112731327?ops_request_misc=&request_id=&biz_id=102&utm_term=opencv%E8%B0%83%E7%94%A8yolo5&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-112731327.first_rank_原创 2021-03-05 13:32:19 · 1609 阅读 · 1 评论 -
C++利用opencv调用pytorch训练好的分类模型
pytorch保存模型import torch.onnx d = torch.rand(1, 3, 224, 224,dtype=torch.float,device = 'cuda')m = model_fto = model_ft(d)onnx_path = "onnx_model_name.onnx"torch.onnx.export(m, d, onnx_path) C++调用#include "opencv2/dnn/dnn.hpp"using namesp原创 2021-03-02 15:59:47 · 4100 阅读 · 12 评论 -
opencv 调用 pytorch训练好的模型
#include "pch.h"#include <opencv2/dnn.hpp>#include <opencv2/imgproc.hpp>#include <opencv2/highgui.hpp>#include <iostream>using namespace cv;using namespace cv::dnn;using namespace std;int main(int argc, char **argv){ .原创 2021-03-01 09:46:21 · 3684 阅读 · 4 评论 -
水平集LevelSet 分割图像
1、水平集的是一个很好的分割算法,其使用比较多的是医学图像领域。其有一些有点也有一些缺点其会计算图片的前景灰度、背景灰度。前景是灰度值大的目标,如果前景目标太小,则会导致其分割的不准确。其算法原理跟大津算法类似。其分割可以补偿一点缺失的边缘,这个特性很适合医学图像领域,因为医学图像很多噪点,边缘不明确的现象,还有一个优点是分割速度快。下面是一些例子:分割成功并补偿了缺失边缘的:分割失败:灯光条太小,其分割成的是整张图下面是水平集的原代码:levelset.hpp#i原创 2021-02-26 18:16:34 · 1993 阅读 · 1 评论 -
局部二值化 Sauvola二值化算法
借鉴:https://blog.csdn.net/wxplol/article/details/81239896?locationNum=13&fps=1原理:分块处理,根据当前块内的均值,方差等信息得出局部阈值;但担心有突变,分块不好怎么办呢?sauvola是一种考虑局部均值亮度的图像二值化方法, 以局部均值为基准在根据标准差做些微调.算法实现上一般用积分图方法来实现的.步骤1 计算区域像素积分和和积分平方和步骤2 计算标准差,标准差的计算方法为: std=sqrt((sqdi..原创 2021-02-04 16:27:59 · 2110 阅读 · 0 评论 -
opencv提取背景
import cv2 as cv capture = cv.VideoCapture("D:/images/video/video_004.avi")mog = cv.createBackgroundSubtractorMOG2()se = cv.getStructuringElement(cv.MORPH_RECT, (3, 3))while True: ret, image = capture.read() if ret is True: fgmask = m.原创 2020-12-22 14:36:00 · 270 阅读 · 0 评论 -
cmake3.17.2+vs2015+opencv4.3编译
1.为什么要装opencv contribopencv只包含基本内容,如果需要用到surf特征提取等内容因为版权问题必须安装opencv_contrib2.安装需要的文件获取vs2015:https://visualstudio.microsoft.com/zh-hans/downloads/opencv:https://opencv.org/releases.html 我用的是opencv3.4.3版本,你可以选择自己喜欢的版本,但是要注意后期下载opencv_cont...原创 2020-05-22 17:30:01 · 327 阅读 · 0 评论 -
Opencv3.3-distanceTransform用于查找物体质心
定义void FindCenterWithDistanceTransform(cv::Mat src, cv::Point ¢erLoc, float &maxValue);void FindCenterWithDistanceTransform(cv::Mat src, cv::Point ¢erLoc, float &maxVal...原创 2020-04-20 19:33:06 · 311 阅读 · 0 评论 -
求区域的最大内接矩形
采用中心往外扩张的方法,目前是特定的场景下使用。bool expandEdge(const Mat & img, int edge[], const int edgeID, bool EXPAND[]){ //[1] --初始化参数 int nc = img.cols; int nr = img.rows; switch (edgeID) { case 0: if (...原创 2020-03-26 16:07:34 · 4870 阅读 · 2 评论 -
工业相机标定相关知识整理
相机标定内参和外参在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定(或摄像机标定)。无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相转载 2018-01-18 17:02:37 · 588 阅读 · 0 评论 -
【Python+OpenCV】Windows+Python3.6.0(Anaconda3)+OpenCV3.2.0安装配置
4.验证Python是否已经被正确安装,按Win+R 输入cmd进入命令提示符窗口,输入“python”回车,出现python版本信息,说明已经正确安装并可以使用了。5.安装IDE,一个好用的IDE能让码代码的幸福感提升多倍,这里我又来安利PyCharm这个超好用的IDE了,意思就是以后写Python程序就是在这个集成开发环境里面写了。PyCharm下载地址,同样很好安装,一路点下去就行。6.安装...原创 2018-03-09 10:30:49 · 383 阅读 · 0 评论 -
findContours函数参数详解
注: 这篇文章用的OpenCV版本是2.4.10, 3以上的OpenCV版本相关函数可能有改动Opencv中通过使用findContours函数,简单几个的步骤就可以检测出物体的轮廓,很方便。这些准备继续探讨一下findContours方法中各参数的含义及用法,比如要求只检测最外层轮廓该怎么办?contours里边的数据结构是怎样的?hierarchy到底是什么鬼?Point()有什么用?先从fi...原创 2018-05-02 20:01:12 · 182 阅读 · 0 评论 -
Mat转指针和指针转Mat
Mat origin_Img = Mat::zeros(m_nGoldenHeight, m_nGoldenWidth, CV_8UC1);;uchar* pimage = origin_Img.data;origin_Img.data = pimage;原创 2018-05-02 20:51:28 · 5019 阅读 · 1 评论 -
找轮廓、轮廓的最小外接矩形
找轮廓 vector<vector<Point>> contours; vector<Vec4i> hierarchy; //只提取最外层的轮廓 findContours(thresh_Img, contours, hierarchy, RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);轮廓个数contours.size()画轮廓...原创 2018-05-03 13:58:49 · 4711 阅读 · 0 评论 -
图像的特征提取算法
常用的图像特征有颜色特征、纹理特征、形状特征、空间关系特征。一 颜色特征(一)特点:颜色特征是一种全局特征,描述了图像或图像区域所对应的景物的表面性质。一般颜色特征是基于像素点的特征,此时所有属于图像或图像区域的像素都有各自的贡献。由于颜色对图像或图像区域的方向、大小等变化不敏感,所以颜色特征不能很好地捕捉图像中对象的局部特征。另外,仅使用颜色特征查询时,如果数据库很大,常会将许多不需要的...原创 2018-04-27 14:48:02 · 1795 阅读 · 0 评论 -
roi取一感兴趣的区域,显示另一幅图像
#include<iostream>#include<opencv2/core/core.hpp>#include<opencv2/highgui/highgui.hpp>#include<opencv2/imgproc/imgproc.hpp>using namespace std;using namespace cv;int main(){ Ma...原创 2018-04-27 15:24:54 · 247 阅读 · 0 评论 -
访问Mat中每个像素的值
Mat contours_max_Img = Mat::zeros(thresh_Img.size(), CV_8U);int m = *(uchar*)(contours_max_Img.ptr<uchar>(i) + j);Color Reduce还是使用经典的Reduce Color的例子,即对图像中的像素表达进行量化。如常见的RGB24图像有256×256×256中颜色,通过R...原创 2018-04-27 15:49:01 · 513 阅读 · 0 评论 -
OpenCV中GPU模块(CUDA)函数
The OpenCV GPU module is a set of classes and functions to utilize GPU computational capabilities. It is implemented using NVIDIA* CUDA* Runtime API and supports only NVIDIA GPUs. 1. getCudaEnabl...原创 2018-05-21 16:58:35 · 2232 阅读 · 0 评论 -
opencv中cuda模块的数据结构简易用法
/*-------------------------------------------------------------------------里面比较重要的是 InputArray;getGpuMat();PtrStepSzb; 这么几个数据类型和函数--------------------------------------------------------------...原创 2018-06-12 15:07:05 · 1331 阅读 · 0 评论 -
OpenCV_CUDA 中GpuMat数据结构
一 、GUPMat 概述 在使用OpenCV_CUDA 编程中会遇到GpuMat数据结构,该数据结构是GPU内存容器。 在GUP中,类GpuMat是存储2D数据。类GpuMat 的特点:(1)它的数据不是连续的,在每一行末尾额外填充数据;(2)它包含下面数据项: --data: GPU内存指针数据开始; --step:距离之间的数据是两个连续的行; ...原创 2018-06-05 17:57:24 · 4893 阅读 · 2 评论 -
opencv中常用cuda函数总结
bitwise_and()bitwise_not()bitwise_or()bitwise_xor()compare()divide():除exp()log()max()min()multiply()threshold():二值化,但要指定设定阈值blendLinear():两幅图片的线形混合calcHist()createBoxFilter ():创建一个规范化的2D...原创 2018-06-01 14:48:15 · 5630 阅读 · 0 评论 -
OpenCV 3.x 源码结构简介
OpenCV 3.x 与之前版本的不同1)以C++ 风格API为主,C 风格的API 最终可能会取消。2)C++ API 更加简洁,引入很多C++面向对象的特性3) 算法都将继承自 cv::Algorithm 接口。4) 模块分类细化,意义和功能明显。源代码结构1)3rdparty/,OpenCV 依赖的第三方库,比如:ffmpeg,jpg、png、tiff等。2)apps/,包含进行 haar...原创 2018-06-11 09:22:17 · 899 阅读 · 0 评论 -
SeetaFace 开源的人脸识别代码
最近在做一个人脸识别(人脸对比)的项目,所以查找了一些人脸识别的相关算法。刚开始考虑的是dlib,但没有折腾出来(最新的版本需要使用2015编译?)。在我十分纠结的时候,无意中查到了SeetaFace这个开源项目,并成功的运用起来了,十分兴奋,而且SeetaFace还是个国产货,更加感动,感谢开源者的无私奉献。简介SeetaFace Engine是一个开源的人脸识别引擎(官网:Github...原创 2018-08-13 20:09:00 · 1348 阅读 · 1 评论 -
【项目记录】常用opencv函数运行速度实测
处理器:E3 1230,基于opencv3.0官方源码编译版本(自带IPP加速)输入数据 1000*1000 矩阵测试方法:连续运行10000次,取平均值规律:尽量使用浮点数据进行处理,因为函数处理前会先转为浮点类型,该操错也耗时 1、寻找大值最小值 minMaxLoc对于CV_32F类型,0.25ms,输入整型数据会大大增加耗时耗时基本可以忽略 2、...原创 2018-08-21 16:57:06 · 2233 阅读 · 0 评论 -
opencv系列-图像清晰度评价
opencv系列-图像清晰度评价1,换了opencv3.4,用来测试2,opencv好评呀 图像清晰度评价算法有很多种,在空域中,主要思路是考察图像的领域对比度,即相邻像素间的灰度特征的梯度差;在频域中,主要思路是考察图像的频率分量,对焦清晰的图像高频分量较多,对焦模糊的图像低频分量较多。 这里实现3种清晰度评价方法,分别是Tenengrad梯度方法、Laplacian梯度...原创 2018-09-04 20:11:14 · 2256 阅读 · 0 评论 -
图像清晰度的评价及分析
在无参考图像的质量评价中,图像的清晰度是衡量图像质量优劣的重要指标,它能够较好的与人的主观感受相对应,图像的清晰度不高表现出图像的模糊。本文针对无参考图像质量评价应用,对目前几种较为常用的、具有代表性清晰度算法进行讨论分析,为实际应用中选择清晰度算法提供依据。 (1)Brenner 梯度函数Brenner梯度函数是最简单的梯度评价函数,它只是简单的计算相邻两个像素灰度差的平方...原创 2018-09-04 20:12:29 · 3389 阅读 · 2 评论 -
使用dlib库进行人脸识别
一、安装opencv和dlib我使用的anaconda,安装比较方便。安装opencv,在指定环境下输入:conda install opencv安装dlib:conda install -c conda-forge dlib二、实现1、项目结构介绍其中face_detect文件夹保存检查到的人脸,face_repo里是待检测的人脸照片,face_test里...原创 2018-09-30 08:36:29 · 2622 阅读 · 0 评论 -
OpenCV 计算运行时间(us,ms,s)
1. cvGetTickCount()和cvGetTickFrequency()计时,得到的单位是us级的统计时间:double start = static_cast<double>(cvGetTickCount());double time = ((double)cvGetTickCount() - start) / cvGetTickFrequency();cout ...原创 2018-10-19 10:22:51 · 2573 阅读 · 0 评论 -
OpenCV实现0到9数字识别OCR
使用OpenCV对0到9数字进行识别,实现简单OCR功能,基于CA(轮廓)分析实现特征提取,基于L1距离计算匹配实现数字识别。在排除干扰的基础上,识别精度可以达到98%以上。整个算法分为两个部分,第一部分是特征提取,提取的特征实现了尺度不变性与轻微光照与变形干扰排除,第二部分基于特征数据进行匹配实现了相似性比较,最终识别0到9十个数字。第一部分详解:算法的第一部分主要是实现以下功能,提取4...原创 2018-10-19 14:03:05 · 7826 阅读 · 1 评论 -
图像融合——泊松克隆seamlessClone
seamlessClone是OpenCV中新出现的函数,应该说如果能够基于较为准确的图像分割,能够得到很好的结果。原始的前景,背景三种flag下的融合结果#include <opencv2/photo.hpp>int main( int argc, const char** argv ){ Mat src = imread("iloveyoupapa.pn...原创 2018-10-26 09:21:35 · 3710 阅读 · 2 评论 -
寻找复杂背景下物体的轮廓(OpenCV / C++ - Filling holes)
一、问题提出这是一个来自"answerOpenCV"(http://answers.opencv.org/question/200422/opencv-c-filling-holes/)整编如下:title:OpenCV / C++ - Filling holescontent:Hello there,For a personnel projet, I'm trying to ...原创 2018-10-26 14:12:49 · 1017 阅读 · 0 评论 -
【4opencv】求解向量和轮廓的交点
在“学习OpenCV3"的QQ群众,网友且行且珍惜针对前期博客(https://www.cnblogs.com/jsxyhelu/p/9345590.html)中的内容提出了以下问题:比如这张图,利用PCA求出了特征向量之后,我想要求解与轮廓的交点,不知道有没有简单的方法@禾老师 非常好的问题!在寻找到轮廓的”主方向“后,往往下一个动作就是寻找向量和轮廓的交点,因为往往这才是我们...原创 2018-10-26 14:17:06 · 1766 阅读 · 0 评论 -
判断一个点是否在RotatedRect中
openCV函数pointPolygonTest():C++: double pointPolygonTest(InputArray contour, Point2f pt, bool measureDist)用于判断一个点是否在轮廓中 当measureDist设置为true时,若返回值为正,表示点在轮廓内部,返回值为负,表示在轮廓外部,返回值为0,表示在轮廓上。 当measureDi...原创 2018-10-26 14:21:52 · 1097 阅读 · 1 评论 -
Poisson Blending(Seamless clone)研究和实现;泊松融合
Poisson Blending 实现了非常棒的效果,可以看 《自己动手,实现“你的名字”滤镜》 http://www.cnblogs.com/jsxyhelu/p/7216795.html它的原理在论文《Poisson Image Editing》中进行了比较详细的阐述,但是英文的大论文看起来的却比较麻烦,在 https://wenku.baidu.com/view/55ac10a7be1e...原创 2018-10-26 14:57:58 · 2205 阅读 · 1 评论 -
工业相机与普通相机的差别
即将转入算法研究,对之前在相机使用和选型等等问题做个总结,先来回答一个在开始就问自己的一个问题:为什么工业相机那么贵?贵在哪里了? 以下是小编整理的一些新手资料,希望对刚入手相机的有所帮助(主要来自美国TEO工业相机和中国海关杂志) 一、 工业相机与普通相机的区别 工业相机是机器视觉系统中的一个关键组件,其最本质的功能就是将光信号转变成有序的电信号。选择合适的相机也是机器视觉系统设计中的重要...原创 2018-10-26 15:16:56 · 567 阅读 · 0 评论