图像处理
图像处理与计算机视觉
linghugoogle1
Show me the code.
展开
-
实现证件照APP(一)
业务层通过手机拍摄、裁剪、美颜各种尺寸的证件照。功能层支持各种尺寸的证件照库;抠图;美颜;架构层方案一:客户端拍摄图片上传服务端,服务端Python抠图,下发给客户端;客户端在此基础上,实现美颜算法;为了兼容iOS和Android,需要调用OpenCV C++库。方案二:纯客户端操作,抠图需要用到深度学习算法,需要实现Python VM,或许可以使用Python-opencv实现本地的图像处理。倾向于第一种方案,实现起来较为简单;扩展性也较强。算法层抠原创 2021-08-01 16:33:55 · 913 阅读 · 0 评论 -
【OpenCV系列】详解掩膜mask
在OpenCV中我们经常会遇到一个名字:Mask(掩膜)。很多函数都使用到它,那么这个Mask到底什么呢?一开始我接触到Mask这个东西时,我还真是一头雾水啊,也对无法理解Mask到底有什么用。经过查阅大量资料后,也对Mask有一点自己的理解了,下面就说说我的理解。比如我要对一幅图进行抠图操作,这就要用到Mask了,那我就以抠图为例,解释Mask在里面的作用。先上程序,再一句一句剖析。...转载 2019-03-06 16:22:16 · 863 阅读 · 0 评论 -
【OpenCV系列】OpenCV霍夫梯度找圆算法
两个步骤:寻找圆心、对所有可能的圆心做估计1、寻找圆心用Canny算法进行边缘检测,得到边界二值图用Sobel算子计算原图的梯度遍历边缘二值图中的非0点,沿着梯度方向和反方向画线段(梯度方向为圆弧的法线方向,即半径方向),线段的起点和长度由参数允许的半径区间决定。将线段经过的点在累加器中记数对累计器中的点从大到小排序,记数越大越有可能成为圆心,优先估计半径2、对某个可能的圆心...转载 2019-03-06 16:20:17 · 913 阅读 · 0 评论 -
【OpenCV系列】 边缘检测之Canny
1. 写在前面最近在做边缘检测方面的一些工作,在网络上也找了很多有用的资料,感谢那些积极分享知识的先辈们,自己在理解Canny边缘检测算法的过程中也走了一些弯路,在编程实现的过程中,也遇到了一个让我怀疑人生的BUG(日了狗狗)。就此写下此文,作为后记,也希望此篇文章可以帮助那些在理解Canny算法的道路上暂入迷途的童鞋。废话少说,上干货。2. Canny边缘检测算法的发展历史Canny...转载 2019-03-06 16:18:02 · 294 阅读 · 0 评论 -
【OpenCV系列】非极大值抑制(Non-Maximum Suppression,NMS)
概述非极大值抑制(Non-Maximum Suppression,NMS),顾名思义就是抑制不是极大值的元素,可以理解为局部最大搜索。这个局部代表的是一个邻域,邻域有两个参数可变,一是邻域的维数,二是邻域的大小。这里不讨论通用的NMS算法(参考论文《Efficient Non-Maximum Suppression》对1维和2维数据的NMS实现),而是用于目标检测中提取分数最高的窗口的。例如...转载 2019-03-06 16:16:25 · 10838 阅读 · 0 评论 -
【OpenCV系列】深入浅出的讲解傅里叶变换(真正的通俗易懂)
原文出处:韩昊 1 2 3 4 5 6 7 8 9 10 作者:韩昊 知乎:Heinrich 微博:@花生油工人 知乎专栏:与时间无关的故事 谨以此文献给大连海事大学的吴楠老师,柳晓鸣老师,王新年老师以及张晶泊老师。 ...转载 2019-03-06 16:15:18 · 680 阅读 · 0 评论 -
【OpenCV系列】Scalar数据类型理解
1、定义typedef struct Scalar{ double val[4];}Scalar;Scalar是一个由长度为4的数组作为元素构成的结构体2、使用Mat M(7,7,CV_32FC2,Scalar(1,3));上面的代码表示:创建一个2通道,且每个通道的值都为(1,3),深度为32,7行7列的图像矩阵。CV_32F表示每个元素的值的类型为32位...原创 2019-03-06 16:14:07 · 1173 阅读 · 0 评论 -
【OpenCV系列】OpenCV基本数据结构
原文链接:https://blog.csdn.net/a40850273/article/details/82751876转载 2019-03-06 16:11:15 · 141 阅读 · 0 评论 -
【辅助驾驶】激光数据与图像数据的融合[2.1]——普通相机成像与标定
一、成像的本质本质:将三维世界映射到二维平面上。具体映射过程:1、世界坐标系(Xw,Yw,Zw)到相机坐标系(Xc,Yc,Zc)原理图:大白话,由于摄像机相对世界地平面的旋转和平移,成像会歪。公式:其中R为3*3的旋转矩阵,t为3*1的平移矢量,(xc,yc,zc,1)T为相机坐标系的齐次坐标,(xw,yw,zw,1)T为世界坐标系的齐次坐标。2、相机坐标系(X...原创 2019-01-08 15:53:13 · 1459 阅读 · 1 评论 -
【python图像处理】单张图像拼接与批量图片拼接
一、效果 二、代码1、单张图片拼接# 图片拼接from PIL import Image# pil paste可以进行图片拼接import cv2import numpy as nppath="F:/out/"+str(0)+".jpg"img_out=cv2.imread(path)num=5for i in range(1,num): pa...原创 2019-01-07 10:53:39 · 33443 阅读 · 9 评论 -
【OpenCV系列】opencv3.2.0形态学滤波之开运算、闭运算
/* 一、开运算: (1)开运算,其实就是先腐蚀后膨胀的过程。 (2)数学表达式:dst = open(src,element) = dilate(erode(src,element)) (3)作用:开运算平滑物体的轮廓,断开较窄的狭颈,消除细的突出物 (4)核心API函数:morphologyEx() [详见《opencv3编程入门》 P205 ] ...转载 2019-03-06 16:23:58 · 401 阅读 · 0 评论 -
【OpenCV系列】opencv python 基于分水岭算法的图像分割
理论任何灰度图像都可以看作是地形表面,其中高强度表示山峰和丘陵,而低强度表示山谷.用不同颜色的水(标签)填充每个孤立的山谷(局部最小值),随着水的上升,明显具有不同的颜色的水将开始融合.为避免这种情况,需要在水合并的位置建立障碍,在所有的山峰都被水淹没之前,要继续填满水和建造栅栏的工作然后你创建的障碍会给你分割的结果,这就是分水岭背后的“哲学”.可以访问我了解更多相关内容.这种方法会导...转载 2019-03-06 16:27:12 · 708 阅读 · 0 评论 -
【OpenCV系列】图像修复技术
在实际应用中,我们的图像常常会被噪声腐蚀,这些噪声或是镜头上的灰尘或水滴,或是旧照片的划痕,或者是图像遭到人为的涂画(比如马赛克)或者图像的部分本身已经损坏。如果我们想让这些受到破坏的额图片尽可能恢复到原样,Opencv能帮我们做到吗?OpenCV真的有这个妙手回春的功能!别以为图像修补的工作只能用PS或者美图秀秀那些软件去做,其实由程序员自己写代码去做更加高效!图像修复技术的原理是什么呢...转载 2019-03-06 16:29:40 · 745 阅读 · 0 评论 -
【人脸检测与识别】Python、百度API
一、百度API官网:http://ai.baidu.com/tech/face官方文档:http://ai.baidu.com/docs#/Face-Detect-V3/top过程:1、创建应用;2、编写程序;3、调用API。二、人脸识别# 官方文档 http://ai.baidu.com/docs#/Face-Python-SDK/3d1dd00cfrom aip i...原创 2019-06-26 16:47:46 · 721 阅读 · 0 评论 -
【人脸检测与识别】Python、face_recognition实现
一、安装face_recognize(Windows10,python3.6)1、安装dlib(注意版本)pip install dlib=19.42、安装face_recognizepip install face_recognition二、人脸检测import face_recognitionimage = face_recognition.load_ima...原创 2019-06-26 16:42:53 · 1890 阅读 · 0 评论 -
【人脸检测与识别】C++、OpenCV实现人脸检测
一、效果二、原理OpenCV自带的Haar特征,加级联分类器实现。三、代码#include <opencv/cv.h> #include <opencv/highgui.h>#include <opencv2/opencv.hpp>#include <opencv2/highgui/highgui.hpp>#includ...原创 2019-06-26 16:31:42 · 5516 阅读 · 2 评论 -
【OpenCV】Visual Studio配置全教程
一、OpenCV官方版本快速下载地址链接:https://blog.csdn.net/linghugoolge/article/details/88633035说明:VC14对应Visual Studio 2015VS15对应Visual Studio 2017二、永久配置教程VS2015+OpenCV340+ReleaseX64注意:1)参考:https://...原创 2019-03-18 10:18:26 · 310 阅读 · 0 评论 -
Opencv各版本汇总下载
Windows版:Opencv 1.0链接:https://pan.baidu.com/s/1EIoSNGUh3xW7CrGpvgjSiw 提取码:zc15 Opencv 2.4.9:链接:https://pan.baidu.com/s/1eaLeOUu62NxVCKNOLkvLRw 密码:72vf Opencv 2.4.11:链接:https://pan.baidu.com...转载 2019-03-18 09:28:14 · 7915 阅读 · 0 评论 -
【OpenCV系列】知识点总结
10、特征检索与匹配SURF特征特征点匹配:类似ICP、PnP、Ransac算法寻找已知物体9、角点检测协方差与协方差矩阵协方差矩阵:两两特征之间的协方差组成的矩阵Harris角点检测Shi-Tomasi角点检测亚像素级角点检测此刻坐标往往都是整数出现,而在真实的世界...原创 2019-03-06 21:54:59 · 927 阅读 · 0 评论 -
【OpenCV系列】特征提取介绍:HOG、SIFT、SURF、ORB、LBP、HAAR
机器视觉特征提取介绍:HOG、SIFT、SURF、ORB、LBP、HAAR 一. 概述这里主要记录自己的一些感悟,不是很系统。想要详细系统的理论,请参考文末的《图像处理之特征提取》。个人不是专业cv工程师,很多细节没有深究,描述可能不严谨。 在总结物体检测算法之前先把基础的特征点理论整理一下。二. HOG求取前先灰度化然后Gamma校...转载 2019-03-06 16:41:08 · 1610 阅读 · 0 评论 -
【OpenCV系列】模板匹配
原理什么是模板匹配?模板匹配是一项在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术.它是怎么实现的?我们需要2幅图像:我们的目标是检测最匹配的区域:原图像 (I):在这幅图像里,我们希望找到一块和模板匹配的区域 模板 (T):将和原图像比照的图像块为了确定匹配区域, 我们不得不滑动模板图像和原图像进行比较:通过滑动, 我们的意思是图像块一次...转载 2019-03-06 16:37:52 · 17872 阅读 · 2 评论 -
【OpenCV系列】反向投影backproject的直观理解
1、什么是backproject?反向投影:opencv docs给出的概念是“一种记录给定图像中的像素点如何适应直方图模型像素分布的方式。简单的讲, 所谓反向投影就是首先计算某一特征的直方图模型,然后使用模型去寻找图像中存在的该特征。”第一句讲的是backproject的算法实质,但是不好理解,第二句好理解,但是只是重点讲了backproject的应用。 两句都提到了直方图的概念。从...转载 2019-03-06 16:33:49 · 522 阅读 · 0 评论 -
【python图像处理】单张图像裁剪与批量图片裁剪
一、效果二、代码1、单张图片裁剪# 将单张图片分成5张import cv2import numpy as npsrcImg = cv2.imread("F:/test.jpg")cv2.imshow("[srcImg]",srcImg)# shap[0] height,shape[1] widthprint(srcImg.shape)hei=srcImg.sh...原创 2019-01-07 10:53:37 · 33370 阅读 · 7 评论 -
【图像处理】Matlab打开PCD或者PLY文件点云文件
一、Windows系统实现配置PCL库最新版本的PCL Windows已经进行了更新,不少网络现有教程都无法使用。建议放弃挣扎,使用PCL更换Ubuntu。二、Matlab打开PCD或者其他点云文件如果提示缺少pcread,会自动安装MATLAB图像处理Toolbox。ptCloud = pcread('1.pcd'); % read from a PLY filefigure...原创 2018-12-25 13:49:18 · 12167 阅读 · 9 评论 -
【辅助驾驶】激光数据与图像数据的融合[2.2]——鱼眼相机成像与标定
一、成像原理鱼眼镜头一般是由十几个不同的透镜组合而成的,在成像的过程中,入射光线经过不同程度的折射,投影到尺寸有限的成像平面上,使得鱼眼镜头与普通镜头相比起来拥有了更大的视野范围。下图表示出了鱼眼相机的一般组成结构。最前面的两个镜头发生折射,使入射角减小,其余的镜头相当于一个成像镜头,这种多元件的构造结构使对鱼眼相机的折射关系的分析变得相当复杂。研究表明鱼眼相机成像时遵循的模型可以...原创 2018-12-23 16:12:03 · 1730 阅读 · 0 评论 -
【辅助驾驶】KITTI激光数据与图像数据的融合MATLAB实现[4]——稠密深度图实现
一、实现效果二、思路与代码由于激光点云数据比较稀疏,直接将激光雷达数据映射到图像上,会有很多点不匹配,对于缺失的深度信息,可以通过周围点的深度的权重进行填充。% Written by Muhammet Balcilar, France% All rights reservedclear all%close allclcI=imread('data/image_2/00...原创 2018-12-23 14:38:50 · 3791 阅读 · 6 评论 -
【辅助驾驶】KITTI激光数据与图像数据的融合MATLAB实现[3]——官方数据融合例程
一、实现效果二、代码官方代码:run_demoVelodyne.mfunction run_demoVelodyne (base_dir,calib_dir)% KITTI RAW DATA DEVELOPMENT KIT% % Demonstrates projection of the velodyne points into the image plane%% I...原创 2018-12-23 14:16:11 · 2569 阅读 · 4 评论 -
【辅助驾驶】KITTI激光数据与图像数据的融合MATLAB实现[2]——KITTI数据集简介
一、选择KITTI的原因研究领域的限制我知道并有使用的数据集只有CityScapes等语义分割数据集和KITTI,其中CityScapes主要包括语义分割数据,没有激光雷达数据,Github关于雷达图像融合开源代码找到的也是KITTI的代码。二、数据集简介1、网址:http://www.cvlibs.net/datasets/kitti/index.php/2、采集平台:数据集...原创 2018-12-23 11:46:50 · 2512 阅读 · 1 评论 -
【辅助驾驶】KITTI激光数据与图像数据的融合MATLAB实现[1]——综述
一、效果1、将激光雷达点云数据映射到图片上2、根据激光雷达和图像数据获得密集深度图二、融合的含义数据级融合、特征级融合、决策级融合。参考:https://zhuanlan.zhihu.com/p/479999601、数据级融合针对传感器采集的数据,依赖于传感器类型,进行同类数据的融合。数据级的融合要处理的数据都是在相同类别的传感器下采集,所以数据融合不能处理...原创 2018-12-23 11:19:15 · 3218 阅读 · 9 评论 -
【辅助驾驶】Python OpenCV实现车辆检测
一、功能对车辆前方的车辆进行检测,效果如图: 二、算法1、传统检测方法常规的机器学习方法,包括训练和应用两个过程。训练:需要构建训练集(包括正负样本),使用HOG、SIFT等特征描述获取特征,使用SVM(支持向量机)、决策树等对上一步获取的特征和对应的标签(标签指:正样本或者负样本)进行训练(训练指:自动生成SVM或者决策树等的参数,使其可以用来分类)。应用:提...原创 2018-12-24 14:54:39 · 18358 阅读 · 3 评论 -
【辅助驾驶】Python OpenCV实现行人检测
一、功能对车辆前方的行人进行检测,效果如图:二、算法1、传统检测方法常规的机器学习方法,包括训练和应用两个过程。训练:需要构建训练集(包括正负样本),使用HOG、SIFT等特征描述获取特征,使用SVM(支持向量机)、决策树等对上一步获取的特征和对应的标签(标签指:正样本或者负样本)进行训练(训练指:自动生成SVM或者决策树等的参数,使其可以用来分类)。应用:提取需要...原创 2018-12-24 14:54:31 · 16264 阅读 · 13 评论 -
【辅助驾驶】双目深度估计
一、效果使用两个单目相机实现深度测量二、思路1、使用opencv自带函数:stereo.compute(imgL,imgR)1)效果2)代码# old pythonimport numpy as npimport cv2from matplotlib import pyplot as pltimgL = cv2.imread('tsukuba_l.p...原创 2018-12-19 20:26:21 · 4146 阅读 · 5 评论 -
【鱼眼相机】标定、展开和畸变矫正(matlab版本、C++版本)
一、地址OCamCalib: Omnidirectional Camera Calibration Toolbox for Matlab二、效果原创 2018-11-05 19:36:16 · 6043 阅读 · 2 评论 -
【辅助驾驶】双目相机获得深度图小结
1、真实场景的双目立体匹配(Stereo Matching)获取深度图详解2、OpenCV3.2.0 双目标定+立体匹配(官方自带例子的使用方法)3、Simple stereo matching (BM/SGBM) example4、简单可以运行的demomain.cpp#include "opencv2/core/core.hpp"#include "op...原创 2018-11-05 18:35:10 · 6075 阅读 · 4 评论 -
【辅助驾驶】激光数据与图像数据的融合[3]——激光及相机位置投影关系
一、原理激光雷达获取三维世界坐标,激光雷达数据映射到图像数据,类似世界坐标到像素坐标的转换,通过旋转、平移、缩放实现。 二、原文《激光相机数据融合(2)--激光及相机位置投影关系》——这里有的变换公式。...原创 2018-12-23 16:40:53 · 1915 阅读 · 0 评论 -
【Python-OpenCv】module 'cv2.cv2' has no attribute 'xfeatures2d'(问题已解决,亲测有效!)
一、问题module 'cv2.cv2' has no attribute 'xfeatures2d'二、原因该算法已经申请专利,开源OpenCV没有版权,新的OpenCV去掉了这个算法。 三、解决方案1、推荐解决办法pip uninstall opencv-python#推荐使用豆瓣python源pip install opencv-python==3.4.2....原创 2018-12-24 10:18:21 · 5297 阅读 · 7 评论 -
【辅助驾驶】激光数据与图像数据的融合[5]——激光相机标定与融合MATLAB实现
一、实现效果二、思路1、使用棋盘格标定;2、鱼眼图展开到雷达,对点云着色。三、代码下载https://github.com/linghugoogle/6_calibration四、原文《激光相机数据融合(6)--激光相机标定》——这个博客写的很好,并且提供了可以运行的代码。《The Laser-Camera Calibration Toolbox》——这篇博...原创 2018-12-25 13:21:29 · 1833 阅读 · 1 评论 -
【辅助驾驶】激光数据与图像数据的融合[4]——Gazebo仿真数据融合
一、效果这一节将用ROS+Gazebo 环境获取激光获取点云,并用PCL和OPENCV处理,源代码在:https://github.com/ZouCheng321/5_laser_camera_sim二、原文《激光相机数据融合(5)--Gazebo仿真数据融合》——竟然还有这种的工具 ...原创 2018-12-25 09:10:51 · 1682 阅读 · 1 评论 -
【辅助驾驶】激光数据与图像数据的融合[1]——概述
一、需求目前,大多数智能车辆都装备有快速三维(3D)LiDAR扫描仪,例如由Velodyne制造的扫描仪。激光能够直接提供物体的几何信息,具有范围广、成像距离远和不受光线影响的优点,因此成为近几年的研究热点。然而其无法提供物体的纹理信息,过于稀疏无法提取特征点,往往需要与相机进行配合来达到应用功能。二、实现效果三、实现过程激光相机数据融合的首要任务在于如何将激光获取的点(X...原创 2018-12-25 08:58:55 · 1784 阅读 · 0 评论 -
【辅助驾驶】透视变换、仿射变换(包含鸟瞰图、俯视图、正视图)[1]——原理
一、目的应用1:实现扫描功能,类似“扫描全能王APP”应用2:辅助驾驶(行车记录仪)二、原理1、仿射变换 1)定义:仿射变换是一种二维坐标到二维坐标之间的线性变换。它保持了二维图形的“平直性”(直线经过变换之后依然是直线)和“平行性”(二维图形之间的相对位置关系保持不变,平行线依然是平行线,且直线上点的位置顺序不变)。仿射变换可以直观理解为旋转、平移、缩放等操作...原创 2018-12-19 20:28:36 · 7276 阅读 · 2 评论