小飞龙程序员
想赢并不一定要有实力和本钱,最重要的是有信心和胆识,放弃,就一定会输,尝试还有一半的机会。
展开
-
opencv(python)------人脸检测和识别
人脸检测和识别原创 2022-08-18 21:04:53 · 293 阅读 · 0 评论 -
opencv------图片转化为视频
链接:https://pan.baidu.com/s/1zjI3gehmRnsCx2vd69fVrw。3.保存到视频里面(videocapture)2.循环遍历,读取该图片。1.读取该路径下的图片。原创 2022-08-03 13:04:22 · 1925 阅读 · 0 评论 -
opencv(python)------特征点检测与匹配(四)
在这里插入代码片原创 2022-05-26 15:04:11 · 241 阅读 · 0 评论 -
opencv(python)------人脸检测、人眼检测、HOG行人检测、二维码检测和解码(九)
1.人脸检测读取图片对人脸进行检测:import cv2import numpy as npface_cascade_name=r"./haarcascades/haarcascade_frontalface_alt.xml"#创建级联分类器face_cascade=cv2.CascadeClassifier()if not face_cascade.load(face_cascade_name): print("error load face cascade") exit(原创 2022-06-02 23:29:42 · 423 阅读 · 0 评论 -
opencv(python)------HOG行人检测
以图片代替视频展示效果:原创 2022-06-05 19:59:02 · 805 阅读 · 0 评论 -
opencv(python)角点检测------cornerHarris、shi_tomasi、cornerSubPix角点检测(一)
1. cornerHarris角点检测import cv2import numpy as np#读取图片img=cv2.imread("building.jpg")copy1=np.copy(img)cv2.imshow("img",img)#灰度图转化gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)gray=np.float32(gray)#角点检测corner=cv2.cornerHarris(gray,2,3,0.01)#膨胀处理dst=c原创 2022-05-21 14:18:25 · 828 阅读 · 0 评论 -
opencv(python)------机器学习模块ml(十一)
机器学习ml模块原创 2022-06-09 22:28:06 · 282 阅读 · 0 评论 -
opencv(python)目标跟踪------CamShift、meanShift、稀疏光流法、稠密光流法目标跟踪(二)
1.CamShift算法目标跟踪def CamShift(probImage, window, criteria)参数说明:import cv2import numpy as np#定义输入的文件input_file = "vtest.avi"cap = cv2.VideoCapture(input_file)#设置窗口初始化状态x ,y,w,h = 640,240,50,91track_window = (x,y,w,h )#获取视频第一帧ret ,frame = cap.原创 2022-05-21 22:26:25 · 974 阅读 · 0 评论 -
opencv特征点检测算法总结(八)
1.SIFT算法2. SURF算法3. BRISK算法4.FAST算法5.ORB算法6.Agast算法7. KAZE算法8. AKAZE算法KAZE与AKAZE都是OpenCv中集成的API算法,AKAZE是KAZE的加速版本(A表示Accelerated(加速的))。且AKAZE的执行效率要优于KAZE。与SURF和SIFT不同(基于线性),KAZE(AKAZE)是基于非线性插值的方法,这一点在图像处理方面来说确实比SURF和SIFT要好,毕竟图像大多是不连续的。K原创 2022-05-30 21:27:08 · 199 阅读 · 0 评论 -
opencv(python)相机标定------棋盘角点检测和消除图像失真(六)
相机标定在目标定位跟踪中非常重要,OpenCV中使用棋盘格模板进行相机标定。其中,现实世界中的点即三维点称为object points,棋盘图像中的二维点称为image points。1. 棋盘角点检测并绘制OpenCV中提供了函数findChessboardCorners,用于找到棋盘格模板,其定义如下:retval, corners = findChessboardCorners(image, patternSize, corners=None, flags=None)参数说明如下:●ima原创 2022-05-30 21:08:35 · 1213 阅读 · 1 评论 -
opencv(python)------单应性变换矩阵以及图像插入(五)
单应性变换OpenCV中提供了用于生成单应性变换矩阵的函数findHomography,其定义如下:retval, mask = findHomography(srcPoints, dstPoints, method=None, ransacReprojThreshold=None ,mask=None, maxIters=None, confidence=None)参数说明如下:●srcPoints: 输入图像平面上点的坐标。●dstPoints: 输出图像平面上点的坐标。●method:单原创 2022-05-30 21:08:01 · 756 阅读 · 0 评论 -
opencv(python)------深度学习模块dnn(十二)
深度学习dnn模块原创 2022-06-09 22:29:13 · 630 阅读 · 0 评论 -
opencv(python)------两张图片相似度(十)
图片相似性原创 2022-06-02 23:31:52 · 460 阅读 · 0 评论 -
opencv------角点和特征点区别(七)
在机器视觉中,经常听到两个名字:角点、特征点。出现频率比较高的:角点检测、特征点匹配。那么问题来了,角点和特征点到底什么关系?**图像的特征点(feature point)**是指图像中具有鲜明特性并能够有效反映图像本质特征能够标识图像中目标物体的点。(反应图像特征的点)**图像的角点(corner point)**作为图像关键的局部结构特征,通常被描述成灰度强度变化不连续的点,被称为灰度图像上的奇异特征点。角点属于特征点,而特征点包括了角点以及其他点。因此可以把角点叫做特征点,但是不能认为特征点就原创 2022-05-30 21:26:01 · 204 阅读 · 0 评论 -
opencv(python)------图像分类和目标检测区别
以图片为例:图像分类是单任务算法:只需要确定目标的类别。目标检测是多任务算法:不仅需要确定目标的类别,还需要确定目标的位置。一条回路用来做目标位置回归,一条回路用来做目标分类;.........原创 2022-06-10 22:29:42 · 1056 阅读 · 1 评论 -
opencv(python)------图像无缝克隆、对比度脱色、修复、HDR成像、非真实感渲染(三)
1. 基于opencv的无缝克隆#pythonoutput = cv2.seamlessClone(src, dst, mask, center, flags)#c++seamlessClone(Mat src, Mat dst, Mat mask, Point center, Mat output, int flags)src :目标影像dst :背景图像mask: 目标影像上的mask,表示目标影像上那些区域是感兴趣区域。center: 目标影像的中心在背景图像上的坐标!注意是目标影像原创 2022-05-24 17:11:31 · 450 阅读 · 1 评论 -
opencv(python)------二值化阙值(threshold)、自适应阙值(adaptiveThreshold)
1. 简单阈值对于每个像素,应用相同的阈值。如果像素值小于阈值,则将其设置为0,否则将其设置为最大值。函数cv.threshold用于应用阈值。第一个参数是源图像,它应该是灰度图像。第二个参数是阈值,用于对像素值进行分类。第三个参数是分配给超过阈值的像素值的最大值。OpenCV提供了不同类型的阈值,这由函数的第四个参数给出。通过使用cv.THRESH_BINARY类型。所有简单的阈值类型为:cv.THRESH_BINARYcv.THRESH_BINARY_INVcv.THRESH_TRUNCcv.原创 2022-05-22 18:58:17 · 757 阅读 · 0 评论 -
opencv(python)------衡量性能
1. 使用OpenCV衡量性能cv.getTickCount函数返回从参考事件(如打开机器的那一刻)到调用此函数那一刻之间的时钟周期数。因此,如果在函数执行之前和之后调用它,则会获得用于执行函数的时钟周期数。cv.getTickFrequency函数返回时钟周期的频率或每秒的时钟周期数。因此,要找到执行时间(以秒为单位),你可以执行以下操作:img1 = cv.imread('messi5.jpg')e1 = cv.getTickCount()for i in range(5,49,2):原创 2022-05-22 17:04:27 · 108 阅读 · 0 评论 -
opencv(python)------平移、旋转、仿射、透视变换
1. 平移变换import cv2 as cvimport numpy as npimg = cv.imread('test.jpg',0)cv.imshow('img',img)rows,cols = img.shapeM = np.float32([[1,0,100],[0,1,50]])dst = cv.warpAffine(img,M,(cols,rows))cv.imshow('dst',dst)cv.waitKey(0)cv.destroyAllWindows()注原创 2022-05-22 17:03:28 · 116 阅读 · 0 评论 -
opencv(c++)------图像算法运算
学习图像的几种算术运算,例如加法,减法,按位运算等。您将学习以下功能:cv.add,cv.addWeighted等。1. 图像加法您可以通过OpenCV函数cv.add()或仅通过numpy操作res = img1 + img2添加两个图像。两个图像应具有相同的深度和类型,或者第二个图像可以只是一个标量值。注意: OpenCV加法和Numpy加法之间有区别。OpenCV加法是饱和运算,而Numpy加法是模运算。x = np.uint8([250])y = np.uint8([10])print原创 2022-05-22 15:49:46 · 218 阅读 · 0 评论 -
opencv(python)------图像属性、边框、感兴趣区域以及图像通道拆分和合并
1.拆分和合并图像通道通道拆分b,g,r = cv2.split(img)或b=img[:,:,0]g=img[:,:,1]r =img[:,:,2]通道合并img = cv2.merge((b,g,r))注意:cv.split()是一项耗时的操作(就时间而言)。因此,仅在必要时才这样做。否则请进行Numpy索引。2. 图像感兴趣区域ROIimg=cv2.imread(“test.jpg”)ball = img[280:340, 330:390]或img[273:333, 100原创 2022-05-22 14:23:25 · 428 阅读 · 0 评论 -
opencv(python)------常用函数
1、cv2.VideoCapture()函数:cap = cv2.VideoCapture(0)VideoCapture()中参数是0,表示打开笔记本的内置摄像头。cap = cv2.VideoCapture(“…/1.avi”)VideoCapture(“…/1.avi”),表示参数是视频文件路径则打开视频。2、cap.isOpened()函数:返回true表示成功,false表示不成功3、ret,frame = cap.read()函数:cap.read()按帧读取视频,ret,fram原创 2022-05-21 22:27:41 · 1149 阅读 · 0 评论 -
opencv(c++)------霍夫直线
总结:使用霍夫变换检测直线具体步骤:1.彩色图像->灰度图2.去噪(高斯核)3.边缘提取(梯度算子、拉普拉斯算子、canny、sobel)4.二值化(判断此处是否为边缘点,就看灰度值==255)5.映射到霍夫空间(准备两个容器,一个用来展示hough-space概况,一个数组hough-space用来储存voting的值,因为投票过程往往有某个极大值超过阈值,多达几千,不能直接用灰度图来记录投票信息)6.取局部极大值,设定阈值,过滤干扰直线7.绘制直线、标定角点......原创 2022-05-21 22:26:56 · 655 阅读 · 0 评论 -
opencv(c++)------基础练习五
#include<iostream>#include<opencv.hpp>using namespace std;using namespace cv;Mat img;Point start;void move_on(int event,int x,int y,int flag,void*) { if (event == EVENT_LBUTTONDOWN) { start = Point(x, y); } else if (event ==EVENT_MO原创 2022-05-16 21:16:45 · 450 阅读 · 0 评论 -
opencv(c++)--车道检测项目
车道检测参考视频:链接:https://pan.baidu.com/s/1inffxVhzbw3FcBUiHujMsA提取码:qxjl案例一:#include<iostream>#include<opencv.hpp>using namespace std;using namespace cv;int main() { //(1)读取视频 Mat frame; VideoCapture capture("行车记录.avi"); if (!capture.原创 2022-05-12 19:29:13 · 991 阅读 · 0 评论 -
opencv(c++)------基础练习四
opencv练习#include <iostream>#include<opencv.hpp>using namespace cv;using namespace std;int main() { //复习提纲4: //1.第2章 开发环境 //(1)打开图像,并显示; Mat img = imread("img.jpg"); imshow("原图",img); //(2)对图像进行灰度化处理; Mat gray; cvtColor(img,gray,C原创 2022-05-11 18:43:07 · 449 阅读 · 0 评论 -
opencv(c++)------视频处理(视频和摄像头)
VideoCapture类,有三个构造函数:VideoCapture类VideoCapture::VideoCapture()//默认无参构造函数;VideoCapture::VideoCapture(int device)//参数device指定要打开的摄像头设备,例如(0),(1);VideoCapture::VideoCapture(const string& filename);//构造函数中filename 是指要打开的视频文件路径以及名称;VideoWriter类:Vid原创 2022-05-11 18:42:42 · 625 阅读 · 0 评论 -
opencv(c++)------基础练习三
#include<iostream>#include<opencv2/opencv.hpp>using namespace std;using namespace cv;#if 0int main() { //用VS新建OpenCV工程项目,对附件中的图像automobile.jpg完成题目要求中指定的操作。 //(除特殊注明外,每项5分)。 //1.包含必要的头文件; Mat img = imread("汽车.png"); imshow("原图", im原创 2022-05-09 18:29:43 · 538 阅读 · 0 评论 -
opencv(c++)图像滤波器模块----图像形态学(膨胀、腐蚀、开闭操作、顶帽黑帽、梯度、击中不击中)总结(三)
2. 形态滤波(膨胀(dilate)和腐蚀(erode))Mat getStructuringElement(int shape, Size ksize, Point anchor = Point(-1,-1));参数:shape:结构元素。ksize:结构元素大小。anchor:锚点,默认值Point(-1,-1)表示锚点位于结构元素中心。getStructuringElement()函数构建并返回一个结构元素,可以被作为参数传递给 erode,dilate或morphologyEx函数。你原创 2022-05-09 18:24:14 · 740 阅读 · 0 评论 -
opencv(c++)图像金字塔-----高斯金字塔(上采样和下采样)和拉普拉斯金字塔(Laplacian)
图像金字塔图像金字塔有两种,一种是高斯金字塔,另一种是拉普拉斯金字塔;高斯金字塔用来向下采样,是主要的图像金字塔。拉普拉斯金字塔用来从金字塔图像底层图像重建上层未采样图像,在数据图像处理中,就是数据残差,可以对图像进行最大程度的还原,配合高斯金字塔一起使用。两者区别:高斯金字塔用来向下采样图像,而拉普拉斯金字塔用来从金字塔底层图像中向上采样以重建一个图像。1.高斯金字塔1.1 pyrDown函数:函数的作用:对图像进行滤波(高斯滤波)然后进行下采样,即删除所有的偶数行和列。函数调用形式:v原创 2022-05-07 13:12:48 · 1074 阅读 · 0 评论 -
opencv(c++)------读取图片、保存图片、切割图片、销毁窗口
利用opencv切割并保存图片,需要使用Rect类进行操作。这里讨论如何加载图片、保存图片、切割图片、销毁窗口和waitKey()的用法。Mat img = imread("汽车.png");//读取图片imshow("原图", img);//切割图片//方法一Mat img1;img(Rect(50, 200, 400, 300)).copyTo(img1);imshow("图1", img1);imwrite("automobile_part.jpg", img1);//方法二Re原创 2022-05-06 19:50:23 · 2281 阅读 · 0 评论 -
opencv(c++)------图像分割(阙值、自适应阙值、grabCut、floodfill、wathershed)
1.阈值分割原创 2022-05-05 22:32:29 · 1824 阅读 · 4 评论 -
opencv(c++)锐化滤波(边缘检测算子)------sobel、scharr、Canny、Laplacian总结(二)
锐化滤波锐化滤波主要作用:提高边缘对比度。在图像边缘检测的基础上,对物体背景灰度和纹理特征进行一种无损检测。边缘检查方法,包括一阶微分边缘检测和二阶微分边缘检测。一阶微分边缘检测:soble、prewitt、roberts.二阶微分边缘检测:拉普拉斯算子、高斯拉普拉斯算子、Canny算子.边缘检测和图像锐化区别:1. sobelvoid Sobel( InputArray src, OutputArray dst, int ddepth, i原创 2022-05-05 22:31:35 · 1679 阅读 · 0 评论 -
opencv(c++)平滑滤波------均值、中值、高斯、盒子、双边滤波总结(一)
1. 平滑滤波1.1 均值滤波(blur)blur的作用是对输入的图像src进行均值滤波后用dst输出。C++: void blur(InputArray src, OutputArray dst, Size ksize, Point anchor=Point(-1,-1), int borderType=BORDER_DEFAULT )参数详解如下:第一个参数,InputArray类型的src,输入图像,即源图像,填Mat类的对象即可。该函数对通道是独立处理的,且可以处理任意通道数的图片,但需原创 2022-05-05 22:30:58 · 675 阅读 · 0 评论 -
opencv常用函数
#include<iostream>#include<opencv2/core/core.hpp>#include<opencv2/imgcodecs/imgcodecs.hpp>#include<opencv2/highgui/highgui.hpp>using namespace std;using namespace cv;#if 0int main(){ double alpha = 0.5; double beta; do原创 2022-05-05 22:13:09 · 96 阅读 · 0 评论 -
opencv(c++)------基础练习二
#include<iostream>#include<opencv.hpp>using namespace std;using namespace cv;Mat move_on(Mat srcimg,double xoffset,double yoffset) { int row = srcimg.rows - abs(yoffset); int col = srcimg.cols - abs(xoffset); Mat outimg(row,col,CV_8UC1)原创 2022-05-05 22:12:10 · 144 阅读 · 0 评论 -
opencv(c++)几何变换------图像平移、旋转、缩放、翻转、剪贴
1. 图像平移//平移操作,图像大小不变Mat imageTranslation1(cv::Mat& srcImage, int x0ffset, int y0ffset){ Mat resultImage(srcImage.size(), srcImage.type()); //遍历图像 for (int i = 0; i < srcImage.rows; i++) { for (int j = 0; j < srcImage.cols; j++) { in原创 2022-04-28 10:31:52 · 3773 阅读 · 2 评论 -
opencv(c++)灰度变换(线性变换,非线性变换)和直方图修正
1.灰度变换通常有3种方法对彩色图灰度化。<1>加权平均值D=0.299xR+0.587xG+0.114xB;<2>取最大值法D=max(R,G,B);<3>平均值法D=(R+G+B)/31.1平均值法//平均值法void rgb2gray(Mat& input, Mat& out) { for (int i = 0; i < input.rows; i++) { for (int j = 0; j < input.c原创 2022-04-26 23:45:00 · 4279 阅读 · 0 评论 -
opencv(c++)----基础练习一
1. 练习1第二章 搭建OpenCV开发环境2.1.打开彩色图像并显示;2.2.以灰度形式打开图像并显示;2.3.保存灰度图像;2.4.利用数学函数对数字128.7进行向下取整和向上取整,并屏幕输出结果;2.5.利用数学函数对数字2.5进行四舍六入,并屏幕输出结果;2.6.新建自动适应图片大小的窗口;2.7.在上面窗口中显示第2步所产生的灰度图像;2.8.建立单窗口同时显示图像A和第2.3步保存的灰度图像;2.9.建立回调函数,用鼠标在图像A写字;2.10.利用滑动条控制膨胀;2.1原创 2022-04-24 00:59:35 · 224 阅读 · 0 评论 -
opencv(c++)入门基础
1.核心功能(core 模块)在这里,您将了解这个库的基本构建块。为了理解如何在像素级上操作图像,必须阅读。Mat(图像容器)、扫描图像、查找表、时间测量、矩阵掩码运算、离散傅里叶变换、使用XML和YAML文件的文件输入和输出、并行化代码2.[图像处理(imgproc 模块)]在本节中,您将了解OpenCV中的图像处理(操作)函数基础绘画、随机生成器和文本、平滑图像、腐蚀与膨胀、形态学变换、击中-击不中、提取水平线和垂直线、图像金字塔、阈值操作、线性滤波器、padding图像、Sobel算子、La原创 2022-04-24 00:54:31 · 1716 阅读 · 0 评论