opencv
多云的夏天
读小说一样读代码
展开
-
C++-OpenCV(10)-DNN-图像分类
图像分类:给一张图像,和配置文件,这张图像的类型在配置文件中定义,根据这些条件,给出这张图像的分类。可以用DNN实现。不过DNN不支持训练只支持推理(推理:前向反馈;训练,反向传播。训练用Caffe Tensorflow Torch Darknet)。DNN的使用非常简单,就4步,如下图所示:代码如下:void main(){ //读取模型、配置、图像、分类文件 //googlenet 基于ImageNet数据集训练,支持1000个类别的数据分类 string protoF.原创 2021-04-22 21:11:46 · 1331 阅读 · 0 评论 -
C++-OpenCV(9)-多目标跟踪
实现步骤与单目标跟踪一样,只是创建和初始化的时候用的是数组//创建:Create multitracker Ptr<MultiTracker> multiTracker = cv::MultiTracker::create();//初始化:initialize multitracker //add指定不同的方法 for(int i=0; i < bboxes.size(); i++) multiTracker->add(createTrackerByNa原创 2021-03-29 10:21:55 · 962 阅读 · 0 评论 -
C++-OpenCV(18)-文档对齐-detectAndCompute-DMatch-findHomography-warpPerspective
很有趣的功能:左边是原始图,右边是结果图,是不是清晰很多。实现步骤://1.模板+用户输入的图//2.ORB 特征检测,用15%的点做匹配//3.找H 矩阵//4.使用透视将拍的照变换到模板上Mat imReference = imread(path1); Mat img = imread(path2); int MAX_FEATURES = 500; float GOOD_MATCH_PERCENT = 0.15f; //2.ORB 特征检测,用15%的点做匹配 Mat im原创 2021-03-15 16:30:02 · 412 阅读 · 0 评论 -
C++-OpenCV(17)-ORB-暴力匹配-BFMatcher
根据ORB找描述子,之后进行匹配,如下图所示:主要是-BFMatcher是使用:Mat img1, img2, img11, img22; img1 = imread(path1); img2 = imread(path2); imshow("img1", img1); waitKey(0); //1.ORB检测 Ptr<ORB> orb = ORB::create(); //2.生成描述子 vector<KeyPoint> kp1, kp2; Ma.原创 2021-03-15 15:43:00 · 1733 阅读 · 0 评论 -
C++-OpenCV(16)-ORB-特征提取-detectAndCompute
ORB 主要是在快速关键点检测算法跟 BRIEF 描述子算法上改进而成的.据说性能比较好,计算要求低,适合全景图拼接。ORB用法示例://关键点 keyPoint 图像中稳定的特征点 迁移、旋转、放缩等不变特性//描述子Descriptor 对关键点进行向量化、数值化描述//ORB 特征提取: 特征点检测Feature2D::detect()、描述子生成Feature2D::compute()、 //Feature2D::detectAndCompute()原创 2021-03-15 14:58:54 · 6520 阅读 · 0 评论 -
C++-OpenCV(15)-单应性变换-h的求解-findHomography-warpPerspective
主要应用于图像对齐。两张图片,角度不同,两张图片上相同位置标记-相关点。 一张图映射到另一张图。应用的最多的其实还是抠图,或者两图中的文本比较。上代码:Mat im_src, im_dst,h, im_out; im_src = imread(path_src); im_dst = imread(path_dst); //特定图片写死的 vector<Point2f> pts_dst{ Point2f(318, 256), Point2f(534, 372),Point2f(3原创 2021-03-15 13:12:35 · 1653 阅读 · 0 评论 -
C++-OpenCV(14)-仿射变换-平移-放大-旋转-错切-仿射变换矩阵-warpAffine
仿射变换:就是把一张图片做了平移-放大-旋转-错切等变换.被变换的矩阵就叫仿射变换矩阵。下图为平移(25,25)后的对象对比图。上代码:Mat image, warpMat, result; image = imread(path); //1.平移-偏移量(25,25) float warpMatValues[] = { 1.0,0.0,25.0, 0.0,1.0,25.0 }; warpMat = Mat(2, 3, CV_32F, warpMatValues);原创 2021-03-15 13:09:16 · 1303 阅读 · 0 评论 -
C++-OpenCV(13)-VS2019-深度学习-tensorflow环境配置
下载OPenCV后,VS中配置:1.添加包含目录和库目录:2.添加库文件:以上如果不是用到深度学习框架,基本可以了。3.如果要用深度学习框架原创 2021-03-12 13:59:52 · 1120 阅读 · 0 评论 -
C++-OpenCV(8)-单目标跟踪
OPenCV支持8种算法的目标跟踪,根据视频特点选择不同的算法。8种算法的实现步骤: 1.创建类对象: create() 2.对象初始化: init() 初始帧图像、跟踪目标的初始矩形框位置 此处用Rect2d 设置矩形框位置,或者手动选取矩形框 3.while循环 对视频进行逐帧处理 update(,) 矩形框在下一帧的位置 (新一帧图像,目标矩形框在新一帧图像上的位置) update实现所...原创 2021-04-22 21:06:15 · 846 阅读 · 0 评论 -
C++-OpenCV(7)-Lucas-Kanade光流算法
对于运动的视频,用Lucas-kanade进行跟踪,动态捕捉跟踪的目标。代码如下:string videoFileName = "videos/cycle.mp4"; VideoCapture cap(videoFileName); int width = cap.get(CAP_PROP_FRAME_WIDTH); int height = cap.get(CAP_PROP_FRAME_HEIGHT); VideoWriter out("sparse-output.mp4", .原创 2021-04-22 21:06:36 · 714 阅读 · 1 评论 -
C++-OpenCV(6)-视频稳态
对于一个出现抖动的视频,我们如何处理它让它不抖动呢?原创 2021-04-22 21:07:17 · 719 阅读 · 0 评论 -
C++-OpenCV(5)-目标跟踪算法的比较
场景不同,选择不同的算法原创 2021-04-22 21:07:40 · 280 阅读 · 0 评论 -
C++-OpenCV(4)-图像分类-SVM-HOG特征描述子
功能和应用场景:给一张人脸图片,检测一下这张图片上的人脸是否带眼镜。HOG特征描述子之类的基本概念就不赘述了。流程分两部分:一部分输入正负样本,自己训练模型;另一部分用训练好的模型文件检测: 其实所有的分类基本都是这个流程与步骤,关键在于模型文件的生成。 只是有一点不明:比如在进行行人检测时,都用的INRIA数据集,但是自己训练和OPENCV自带的模型出来的效果不一样。...原创 2021-04-22 21:07:58 · 399 阅读 · 0 评论 -
C++-OpenCV(3)-形态学操作-膨胀腐蚀-形态学滤波:morphologyEx
所谓形态学,就是膨胀腐蚀组合。开运算:先腐蚀后膨胀。能够排除小亮点。闭运算:先膨胀后腐蚀。能够排除小黑点。形态学梯度:膨胀图 — 腐蚀图。对二值图像进行这一操作,可将图块的边缘突出出来,故可用来保留物体边缘轮廓。...原创 2021-04-22 21:08:36 · 682 阅读 · 0 评论 -
C++-OpenCV(2)-Blob检测
前偏讲的是0-255的二值图像,Blob 是对灰度图像的检测。可根据面积、阈值、圆度、椭圆、凹凸性进行图像的过滤。实现步骤://1.载入图片//2.设置检测参数//3.把检测的内容放入keyPoint中//4.画圆上代码:Mat img = imread("D:/OpenCVPrj/WangYi/MOpenCV_class4/images/blob_detection.jpg", IMREAD_GRAYSCALE); imshow("input", img); // Set u.原创 2021-04-22 21:09:03 · 1200 阅读 · 0 评论 -
C++-OpenCV(1)-连通区域
两个点:找到组件+标记它找到它:int nComponents = connectedComponents(imThresh, imLabels);标记转换:imLabels.convertTo(imLabels, CV_8U); Mat imColorMap; applyColorMap(imLabels, imColorMap, COLORMAP_JET);上代码// Read image as grayscale ...原创 2021-04-22 21:09:51 · 543 阅读 · 0 评论 -
C++-OpenCV(0)-外接轮廓检测
1.数据源为8通道灰度图像2.外接矩形、边缘轮廓、中心点 3.周长、面积(几何积分值)4.最大、最小外接矩形5.外接圆,外接椭圆1.数据源为8通道灰度图像//转换成8通道cvtColor(image, imageGray, COLOR_BGR2GRAY);2.外接矩形、边缘轮廓、中心点 //mode:轮廓提取方式:RETR_EXTERNAL提取最外层,RETR_TREE 表示出其层次 //method:轮廓逼近方式:CHAIN_APPROX_S...原创 2021-04-22 21:09:31 · 1410 阅读 · 0 评论 -
AI-DNN-RNN-CNN区别
DNN-feedforward neural network 前馈神经网络RNN-Recurrent Neural Network 循环神经网络CNN-Convolutional Neural Networks 卷积神经网络DNN以向量形式输入CNN 比较好,图像领域和自然语言处理领域RNN 处理时序相关的序列问题...原创 2021-03-10 22:11:14 · 227 阅读 · 0 评论 -
python(42)-win10+OpenCV+Python-环境搭建
1下载安装 python和pycharmhttps://www.python.org/downloads/release/python-379/2.安装OPENCV的插件file->settings->+->opencv-python3.代码import cv2cap = cv2.VideoCapture(0)# 3 宽度 4 高度 10 亮度qcap.set(3, 640)cap.set(4, 480)while True: suceess, .原创 2021-02-14 15:11:12 · 112 阅读 · 0 评论 -
Opencv-Python(1)-读取图片、视频、网络摄像头
pycharm+opencv+windows.import cv2import numpy as np'''1.读取图片print("package imported")img =cv2.imread("Resources/1.png")cv2.imshow("Output",img)cv2.waitKey(0)''''''2.视频cap=cv2.VideoCapture("Resources/钢琴1.mp4")while True: suceess,i...原创 2021-01-03 12:56:32 · 384 阅读 · 0 评论 -
Opencv-Python(11)-车牌识别-实例源码
应用:在视频中扫描车牌号,按下s键,可保存车牌到文件夹中。demoimport cv2nPlateCascade = cv2.CascadeClassifier("Resources/haarcascades/haarcascade_russian_plate_number.xml")img = cv2.imread("Resources/carNumber.jpg")minArea = 100color = (255,0,255)count=0while True: #视频..原创 2021-01-04 17:05:34 · 950 阅读 · 0 评论 -
Opencv-Python(10)-视频流-检测最大形状物体并分屏显示-实例源码
视频流中出现了一个矩形,找到“最大目标区域”,并分屏显示出来了。左上为原始的视频,右上为“最大目标区域”,下方的视频也是“最大目标区域”以下是python 代码:import cv2import numpy as npwidthImg = 640heightImg = 480cap = cv2.VideoCapture(0)cap.set(3, widthImg)cap.set(4, heightImg)cap.set(10, 130)#1.合并def stackImag..原创 2021-01-04 17:05:13 · 510 阅读 · 0 评论 -
Opencv-Python(12)-图片-人脸识别-实例源码
xml 下载地址:https://github.com/opencv/opencv/tree/master/data首先要有以上的XML,这是训练好的参照数据。之后很python 的代码很easy.import cv2faceCascade = cv2.CascadeClassifier("Resources/haarcascade_frontalface_default.xml")img = cv2.imread("Resources/faces.jpg")imgGray = cv2...原创 2021-01-04 07:01:56 · 174 阅读 · 0 评论 -
Opencv-Python(9)-视频-MASK-颜色检测
屏幕里只显示一种颜色。有4个屏幕,右上角为原始图像。左上,左下,右下的视窗分别定义为绿色、橘色、紫色。当原始视频中出现了这个颜色,相应的屏幕会出现视图。import cv2import numpy as npframeWidth = 640frameHeight = 480cap = cv2.VideoCapture(0)cap.set(3,frameWidth)cap.set(4,frameHeight)cap.set(10,130)myColors = [[5,107原创 2021-01-03 21:40:47 · 346 阅读 · 0 评论 -
Python-Opencv(8)-图片-shape边界检测-findContours
import cv2import numpy as npdef stackImages(scale,imgArray): rows = len(imgArray) cols = len(imgArray[0]) rowsAvailable = isinstance(imgArray[0], list) width = imgArray[0][0].shape[1] height = imgArray[0][0].shape[0] if rowsAv...原创 2021-01-03 18:42:55 · 413 阅读 · 0 评论 -
Opencv-Python(7)-Trackbar动态调节HSV的值
'''import cv2import numpy as npdef stackImages(scale,imgArray): rows = len(imgArray) cols = len(imgArray[0]) rowsAvailable = isinstance(imgArray[0], list) width = imgArray[0][0].shape[1] height = imgArray[0][0].shape[0] if r...原创 2021-01-03 17:36:48 · 612 阅读 · 0 评论 -
Opencv-Python(6)-按比例合并图片
这是按原图0.4比例,每行3张图片显示的。import cv2import numpy as np'''按比例缩放'''def stackImages(scale,imgArray): rows = len(imgArray) cols = len(imgArray[0]) rowsAvailable = isinstance(imgArray[0], list) width = imgArray[0][0].shape[1] height ...原创 2021-01-03 17:17:02 · 184 阅读 · 1 评论 -
Opencv-Python(4)-画直线、矩形、文字
import cv2import numpy as np'''画线、圈、文字画线 建一个全黑的矩阵'''img=np.zeros((512,512,3),np.uint8)#print(img) high width#img[200:300,100:300]=255,0,0#1.line 画线# 起点 终点 颜色cv2.line(img,(0,0),(300,300),(0,255,0),3)#img.shape[1] high i...原创 2021-01-03 16:32:53 · 253 阅读 · 0 评论 -
Opencv-Python(3)-图片-resize 、cropping
import cv2import numpy as np'''基本功能resize and cropping'''img = cv2.imread("Resources/1.png")print(img.shape)imgResize=cv2.resize(img,(1000,500))print(imgResize.shape)imgCropped=img[0:200,200:500]cv2.imshow("Image",img)cv2.imshow("Image Resiz.原创 2021-01-03 16:30:22 · 205 阅读 · 0 评论 -
Opencv-Python(2)-Gray,Blur、Canny边缘检测
import cv2import numpy as np'''基本功能灰度 模糊 canny边缘检测 膨胀 薄'''img = cv2.imread("Resources/1.png")kernel = np.ones((5,5),np.uint8)imgGray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)imgBlur = cv2.GaussianBlur(imgGray,(7,7),0)imgCanny = cv2.Canny(img,100,1.原创 2021-01-03 16:28:42 · 322 阅读 · 0 评论 -
Opencv-Python(5)-按坐标截取图片,水平、竖直拼接图片
import cv2import numpy as np'''1.按坐标截取图片''''''img = cv2.imread("Resources/cards.jpg")#四张牌 4个坐标# pts1 需要截取图片的四点坐标 pts2 结果图坐标 matrix 存储pts2的像素width,height=250,350#pts1 = np.float32([[111,219],[287,188],[154,482],[352,440]])pts1 = np.float32([...原创 2021-01-03 16:24:49 · 3032 阅读 · 0 评论