open CV视觉图像处理识别
open CV视觉相关包括视频图片视觉处理和图像识别
一航jason
这个作者很懒,什么都没留下…
展开
-
Android使用OpenCV来实现bitmap独立设置每个圆角
Android使用OpenCV来实现bitmap独立设置每个圆角,关于opencv集成请参考我的其他文章,这里方便起见已经封装成java方法供大家调用:代码如下: public static Bitmap drawCircleRadius(int w, int h, int circleR, boolean topLeft, boolean topRight, boolean bottomLeft, boolean bottomRight, Bitmap bitmap) { if原创 2021-08-24 10:28:43 · 295 阅读 · 0 评论 -
opencv用伽马矫正实现光补偿笔记
opencv用伽马矫正实现光补偿笔记代码:void MyGammaCorrection(Mat& src, Mat& dst, float fGamma){ CV_Assert(src.data); // accept only char type matrices CV_Assert(src.depth() != sizeof(uchar)); // build...原创 2019-12-27 16:02:07 · 512 阅读 · 1 评论 -
opencv 傅里叶变换
opencv 实现傅里叶变换,必须承认工程师、码农还真的不是一回事,做个笔记保存下吧先,傅里叶还真的看不明白!!!代码:int main(){ //C:/Users/liyihang/Desktop/sc/out.png Mat I = imread("C:/Users/liyihang/Desktop/sc/out.png", IMREAD_GRAYSCALE); ...原创 2019-12-30 14:56:08 · 328 阅读 · 1 评论 -
opencv描边和浮雕基于Sobel
opencv描边和浮雕基于Sobel代码:/** * @file Sobel_Demo.cpp * @brief Sample code uses Sobel or Scharr OpenCV functions for edge detection * @author OpenCV team */#include "opencv2/imgproc.hpp"#include "o...原创 2020-01-02 15:11:26 · 603 阅读 · 0 评论 -
opencv 模板匹配查找
模板匹配是一项在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术.模板匹配函数:void matchTemplate(InputArray image, InputArray temp1, OutputArray result, int method);参数说明:image,待搜索的图像,且需为 8 位或 32 位浮点型图像。temp1,搜索模板,需要和原图片有一样的数据类型,且尺寸不能大于源图像。result,比较结果的映射图像,其必须为单通道、32 位浮点型图像,大小为 (image.原创 2020-07-13 17:11:18 · 758 阅读 · 0 评论 -
opencv findContours 图像轮廓查找
drawContours函数的作用,主要用于画出图像的轮廓函数说明:findContours(InputOutputArray image, OutputArrayOfArrays contours,OutputArray hierarchy, int mode, int method, Point offset = Point());参数1:单通道图像矩阵,可以是灰度图,但更常用的是二值图像,一般是经过Canny、拉普拉斯等边缘检测算子处理过的二值图像;参数2:contours定义为“vecto原创 2020-07-13 17:57:05 · 900 阅读 · 0 评论 -
opencv 凸包查找convexHull
凸包(Convex Hull)是一个计算几何(图形学)中的概念,在一个实数向量空间V中,对于给定集合X,所有包含X的凸集的交集S被称为X的凸包。X的凸包可以用X内所有点(x1, x2….xn)的线性组合来构造。在二维欧几里得空间中,凸包可以想象为一条刚好包着所有点的橡皮圈,用不严谨的话来讲,给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边形,它能包含点集中所有的点。常见的有Graham’s Scan法和Jarvis步进法。函数说明:void cv::convexHull ( Inpu原创 2020-07-13 18:39:43 · 496 阅读 · 0 评论 -
opencv 绘制轮廓边框 多边形 圆形 矩形
如何使用opencv 绘制轮廓边框最小包裹 多边形 圆形 矩形?函数说明:Rect boundingRect(InputArray points)points:输入信息,可以为包含点的容器(vector)或是Mat。返回包覆输入信息的最小正矩形。RotatedRect minAreaRect(InputArray points)points:输入信息,可以为包含点的容器(vector)或是Mat。返回包覆输入信息的最小斜矩形。void minEnclosingCircle(InputArra原创 2020-07-14 10:54:05 · 1264 阅读 · 0 评论 -
opencv计算轮廓的矩moments
如何使用opencv 的moments方法计算轮廓的矩?矩即为用一组简单的数据(数据描述量)来描述整个图像,这组数据月简单越有代表性越好。良好的特征不受光线、噪点、几何形变的干扰,图像识别技术的发展中,不断有新的描述图像特征提出,而图像不变矩就是其中一个。从图像中计算出来的矩通常描述了图像不同种类的几何特征如:大小、灰度、方向、形状等,图像矩广泛应用于模式识别、目标分类、目标识别与防伪估计、图像编码与重构等领域。函数说明api:获取矩的方法:cv::moments ( InputArray原创 2020-07-15 10:28:44 · 1059 阅读 · 0 评论 -
opencv检测点在轮廓的相对位置 pointPolygonTest
如何用opencv判断点在轮廓的你面、边上或者外面?函数说明:检测点在轮廓的位置:double pointPolygonTest(InputArray contour, Point2f pt, bool measureDist)用于测试一个点是否在多边形中当measureDist设置为true时,返回实际距离值。若返回值为正,表示点在多边形内部,返回值为负,表示在多边形外部,返回值为0,表示在多边形上。当measureDist设置为false时,返回 -1、0、1三个固定值。若返回值为+1,表示原创 2020-07-15 11:26:13 · 1157 阅读 · 0 评论 -
opencv分水岭图像分割算法watershed
如何利用opencv分水岭图像分割算法threshold来分割图像区域?函数说明:void watershed( InputArray image, InputOutputArray markers );image:原图像markers:包含了轮廓点的数据集合void distanceTransform(InputArray src, OutputArray dst, int distanceType, int maskSize)src – 8-bit, 单通道(二值化)输入图片。dst –原创 2020-07-15 15:11:16 · 437 阅读 · 0 评论 -
opencv 视频对象VideoCapture使用
如何使用VideoCapture控制视频输入和对比?基本上,视频操作所需的所有功能集成在cv :: VideoCapture C ++类中。这本身就建立在FFmpeg开源库上。这是OpenCV的基本依赖,所以你不必担心这一点。视频由连续的图像组成,我们将这些在文献中称为帧。在视频文件的情况下,存在指定两帧之间多长时间的帧速率。而对于摄像机,通常每秒可以限制多少帧可以进行数字化,这个属性不太重要,因为相机会看到当前的世界快照。代码:double getPSNR(const Mat& I1, co原创 2020-07-16 16:17:32 · 1089 阅读 · 0 评论 -
opencv视频输入输出VideoCapture和VideoWriter的使用
opencv依赖了ffmpeg,所以可以轻松对avi视频文件进行操作。打开视频文件或摄像头视频需要使用Opencv中的VideoCapture类,保存视频或摄像头视频到本地磁盘,需要使用Opencv中的VideoWriter类。线上代码:bool isInit= false;VideoCapture *inputVideo=NULL;VideoWriter *outputVideo=NULL;JNIEXPORT void JNICALLJava_org_opencv_samples_tuto原创 2020-07-17 10:07:36 · 2039 阅读 · 1 评论 -
android bitmap转成opencv的mat(图像扫描)
如何将bitmap的像素数据转换成opencv的mat对象?首先从bitmap中或者像素数据: String imgPath="/data/data/org.opencv.samples.tutorial2/cache/test_img.png"; bitmap = BitmapFactory.decodeFile(imgPath); ByteBuffer allocate = ByteBuffer.allocate(bitmap.getByteCount(原创 2020-07-21 14:19:26 · 1335 阅读 · 0 评论 -
android使用opencv实现指纹验证效果
接触opencv有一段时间了,刚好公司最近有个指纹相关的功能,其中有个指纹特效晚上现成没有很好定制型所以就用opencv试着写了一个效果,不喜勿喷,高手绕道。效果图:项目源码:https://github.com/woshiliyihang/touchZW效果不是非常好但是修改定制简单,所需要准备的有两张图片:一个是红色前景,一个黑色背景,两张图片尺寸一样大。如果这个对你有帮助记得点赞哦 !!!...原创 2020-07-23 09:39:21 · 958 阅读 · 0 评论 -
opencv 棋盘查找findChessboardCorners函数使用
opencv 棋盘查找findChessboardCorners函数使用 Size size=new Size(6,9); MatOfPoint2f pos=new MatOfPoint2f(); boolean chessboardCorners = Calib3d.findChessboardCorners(mat, size, pos, Calib3d.CALIB_CB_ADAPTIVE_THRESH|Calib3d.CALIB_CB_NORMALIZE原创 2020-07-24 14:22:41 · 1652 阅读 · 1 评论 -
opencv 相机标定获取去畸变矫正图像
opencv 相机标定获取去畸变图像 private void calcBoardCornerPositions(Mat corners,int mCornersSize, Size mPatternSize,double mSquareSize) { final int cn = 3; float positions[] = new float[mCornersSize * cn]; for (int i = 0; i < mPatternS原创 2020-07-29 13:49:42 · 1261 阅读 · 0 评论 -
cornerEigenValsAndVecs和cornerMinEigenVal角点检测
概念cornerEigenValsAndVecs和cornerMinEigenVal用于焦点检测cornerMinEigenVal函数作用计算梯度矩阵的最小特征值,用于角点检测void cornerMinEigenVal( InputArray src, OutputArray dst,int blockSize, int ksize = 3,int borderType = BORDER_DEFAULT );CornerEigenValsAndVecs作用计算图像块的特征值和特征向量,用于原创 2020-08-04 15:55:50 · 628 阅读 · 0 评论 -
goodFeaturesToTrack和cornerSubPix使用
goodFeaturesToTrack和cornerSubPix使用?函数说明void cv::goodFeaturesToTrack(cv::InputArray image, // 输入图像(CV_8UC1 CV_32FC1)cv::OutputArray corners, // 输出角点vectorint maxCorners, // 最大角点数目double qualityLevel, // 质量水平系数(小于1.0的正数,一般在0.01-0.1之间)double minDistanc原创 2020-08-04 17:36:07 · 356 阅读 · 0 评论 -
opencv_createsamples和opencv_traincascade命令
opencv_createsamples和opencv_traincascade命令opencv_traincascade -data dstBuild -vec new_vec.vec -bg sample_neg.dat -numStages 20 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -numPos 100 -numNeg 700 -w 20 -h 20 -mode ALL -precalcValBufSize 1024 -precalcIdx原创 2020-08-10 17:47:22 · 540 阅读 · 0 评论 -
opencv features2d对象识别
对象识别代码: const Ptr<AKAZE> &detetor = AKAZE::create(); vector<KeyPoint> oneKeyPoint; vector<KeyPoint> twoKeyPoint; Mat oneDes, twoDes; //角点查找和特征向量计算描述 detetor->detectAndCompute(oneMat,原创 2020-08-11 11:06:49 · 928 阅读 · 0 评论 -
k-Nearest 最近邻分类算法
概述kNN算法又称为k最近邻(k-nearest neighbor classification)分类算法。所谓的k最近邻,就是指最接近的k个邻居(数据),即每个样本都可以由它的K个邻居来表达。kNN算法的核心思想是,在一个含未知样本的空间,可以根据离这个样本最邻近的k个样本的数据类型来确定样本的数据类型。该算法涉及3个主要因素:训练集、距离与相似的衡量、k的大小;主要考虑因素:距离与相似度。opencv中使用 Mat img = oneMat; Mat gray;原创 2020-08-12 09:14:40 · 1066 阅读 · 0 评论 -
SVM 简介和使用
简介Support Vector Machines(SVM)是由分离超平面正式定义的鉴别分类器。如何计算最佳超平面?我们来介绍用于定义超平面的符号:SVM简介其中β被称为权重向量,而β0称为偏差。也可以看看这和超平面更深入的描述,你可以在4.5节(发现分隔条件超平面书的):统计学习的要素通过 T. Hastie, R. Tibshirani和JH Friedman([172])。通过缩放β和可以以无限数量的不同方式表示最优超平面β0。作为惯例,在超平面的所有可能的表示中,选择的是SVM其原创 2020-08-12 10:32:02 · 1029 阅读 · 0 评论 -
opencv PCA主成分分析的使用
简介主成分分析(PCA)是提取数据集最重要特征的统计程序。PCA(Principal Components Analysis,中文名叫主成分分析,是数据降维很常用的算法。按照书上的说法是:寻找最小均方意义下,最能代表原始数据的投影方法。PCA的一个经典应用就是人脸识别,感兴趣的可以在网上搜eigenface。PCA的主要思想是寻找到数据的主轴方向,由主轴构成一个新的坐标系,这里的维数可以比原维数低,然后数据由原坐标系向新的坐标系投影,这个投影的过程就可以是降维的过程。使用//绘制向量轴void原创 2020-08-12 14:20:46 · 1186 阅读 · 0 评论 -
opencv中使用Caffe框架
Caffe,全称Convolutional Architecture for Fast Feature Embedding,是一个兼具表达性、速度和思维模块化的深度学习框架。由伯克利人工智能研究小组和伯克利视觉和学习中心开发。虽然其内核是用C++编写的,但Caffe有Python和Matlab 相关接口。Caffe支持多种类型的深度学习架构,面向图像分类和图像分割,还支持CNN、RCNN、LSTM和全连接神经网络设计。Caffe支持基于GPU和CPU的加速计算内核库,如NVIDIA cuDNN和Intel原创 2020-08-13 10:52:50 · 765 阅读 · 0 评论 -
通过图片哈希值计算汉明距离来匹配人脸
opencv通过图片哈希值计算汉明距离来匹配人脸string xmlPath = "/data/data/org.opencv.samples.tutorial2/cache/lbpcascade_frontalface.xml";//识别并截取人脸Mat detectAndDisplay(Mat image) { CascadeClassifier ccf; ccf.load(xmlPath); vector<Rect> faces; Mat gray;原创 2020-08-13 15:39:33 · 1002 阅读 · 0 评论