![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenCV
文章平均质量分 91
aworkholic
路漫漫其修远兮,吾将上下而求索
展开
-
常规情况与opencv图像中,计算直线与矩形框的交点
这里直线与矩形框的交点,我们考虑并非线段(若直线延长后与矩形框有交点,如果用两个点描述直线必须要求延长后与矩形框有交点),而是延长后的线段作为实际直线。在下图中我们绘制斜率分别为正、负的情况,且与矩形不相交的示意图,大概有8种情况下,矩形框的4个顶点均在某条直线的一侧。通常我们计算的逻辑,会考虑直线在画面中的多种情况,例如 垂直、水平,以及实际与画面无交集的无效直线等。首先计算直线与线段所在直线交点,若交点的在线段坐标的范围内,那么认为是有交点。在下图中绘制了所有相交的情况,可以看到 在(2)基础上,原创 2024-07-05 22:20:55 · 1082 阅读 · 0 评论 -
opencv dnn模块 示例(25) 目标检测 object_detection 之 yolov9
YOLOv9 是 YOLOv7 研究团队推出的最新目标检测网络,它是 YOLO(You Only Look Once)系列的最新迭代。YOLOv9 在设计上旨在解决深度学习中信息瓶颈问题,并提高模型在不同任务上的准确性和参数效率。:YOLOv9 引入了可编程梯度信息(PGI)的概念,这是一种新的辅助监督框架,用于生成可靠的梯度信息,以便在训练过程中更新网络权重。PGI 通过辅助可逆分支来解决深度网络加深导致的问题,并提供完整的输入信息以计算目标函数。原创 2024-03-11 07:30:00 · 2328 阅读 · 0 评论 -
opencv dnn模块 示例(26) 目标检测 object_detection 之 yolov10
从源码测试中,可以看出清华大学研究团队最新提出的 YOLOv10 是在yolov8 上发展来的。摘要如下:在过去的几年里,由于其在计算成本和检测性能之间的有效平衡,YOLOS已经成为实时目标检测领域的主导范例。研究人员已经探索了YOLOS的架构设计、优化目标、数据增强策略等,并取得了显著进展。然而,对用于后处理的非最大抑制(NMS)的依赖妨碍了YOLOS的端到端部署,并且影响了推理延迟。此外,YOLOS中各部件的设计缺乏全面和彻底的检查,导致明显的计算冗余,限制了模型的性能。原创 2024-06-03 11:02:27 · 753 阅读 · 4 评论 -
opencv拉流出现missing picture in access unit with size 4错误解决
我们使用opencv作为拉流客户端,获取画面后进行图像处理并推流(使用ffmpeg库)。opencv解码同样使用ffmpeg库。注意代码中注释的地方cap.open() 和 cap.read(frame),后面会用到。导致后续获取frame为空,认为流断开触发重新进行拉流的操作,导致后续视频处理、推流业务有短暂停顿,客户端播放会出现响应的短暂黑屏问题。原创 2024-01-12 21:30:00 · 3121 阅读 · 0 评论 -
opencv dnn模块 示例(22) 目标检测 object_detection 之 yolov7
模型结构重参化和动态标签分配已经成为了目标检测领域中的主要优化方向。针对于结构重参化,作者通过分析梯度的传播路径来为网络中的不同层进行结构重参化优化,并且提出了不同规划的模型结构重参化。在动态标签分配上,因为模型有多个输出层,所以在训练时就难以为不同的分支分配更好地动态目标。所以作者提出了一个新的动态标签分配办法:coarse-to-fine,即由粗到细引导标签分配的策略。还提出了扩展和复合缩放的方式,通过这种方式可以更高效利用参数量和计算量。这样不仅可以减少大量参数,还可以提高推理速度以及检测精度。原创 2023-11-10 21:45:00 · 654 阅读 · 0 评论 -
opencv dnn模块 示例(21) 目标检测 object_detection 之 yolov6
2023年初,美团视觉智能部发布了 YOLOv6 3.0 版本,再一次将目标检测的综合性能推向新高。本次更新除了对 YOLOv6-N/S/M/L 模型进行全系列升级之外,还推出了大分辨率 P6 模型。其中,YOLOv6-L6 检测精度和速度超越 YOLOv7-E6E,取得当前实时目标检测榜单 SOTA。yolov6 第一版发布于 2022年6月,截止到目前已经更新到4.0版本。图1 YOLOv6 各尺寸模型与其他 YOLO 系列框架的性能对比图。原创 2023-11-03 20:45:00 · 433 阅读 · 0 评论 -
opencv dnn模块 示例(19) 目标检测 object_detection 之 yolox
YOLOX是旷视科技在2021年发表,对标YOLO v5。YOLOX中引入了当年的黑科技主要有三点,decoupled head、anchor-free以及advanced label assigning strategy(SimOTA)。YOLOX的性能如何呢,可以参考原论文图一如下图所示。YOLOX比当年的YOLO v5略好一点,并且利用YOLOX获得当年的Streaming Perception Challenge第一名。原创 2023-10-23 21:15:00 · 1232 阅读 · 0 评论 -
opencv dnn模块 示例(20) 目标检测 object_detection 之 yolor
paper:code:这里以 yolor-p6-640-640 进行测试。网络模型可以看到,输出一共有4个,实际是4个尺度上的结果,最终通过reshape和concat合并成一个输出(输出格式与yolov5一致)。原创 2023-10-29 21:30:00 · 319 阅读 · 0 评论 -
opencv dnn模块 示例(16) 目标检测 object_detection 之 yolov4
yolo v1~v3 的作者Joseph Redmon于2020年初宣布停止一切CV研究,原因是自己的开源算法已经用在军事和隐私问题上,对他的道德造成了巨大的考验。他的退出是学术界对于AI道德问题一记警钟。salute…俄罗斯大神AlexAB作为YOLO系列的继任者,在Redmon宣发放弃更新Yolo后两个月,发布了YOLOv4。我们以前在windows上测试YOLO算法时,使用的就是AlexAB 的darknet开源项目版本。原创 2023-09-15 21:45:52 · 868 阅读 · 0 评论 -
opencv、ffmpeg使用nvidia-video-codec-sdk编解码
opencv很早就支持cuda加速,但是一般用于图像处理模块。在视频读(包含实时视频流)写上,opencv可以使用ffmpeg作为后端进行编解码,通常是cpu软编解。如果ffmpeg的编译支持gpu硬编解,那么opencv的接口就直接支持硬件编解码了。原创 2023-07-01 11:59:04 · 4128 阅读 · 6 评论 -
opencv编译指定自定义的ffmpeg版本,cuda加速
opencv源码编译,videoio模块通常会使用ffmpeg库。通常我们在编译opencv源码前,会直接使用命令行安装ffmpeg库。如果需要使用cuda硬编解码器,需要再编译ffmpeg。原创 2022-05-03 14:51:58 · 5504 阅读 · 0 评论 -
opencv objdetect模块 示例 人脸检测与识别 demo
opencv4.5.4在objdetect模块中添加了基于深度学习的人脸检测与识别功能,该项目由OpenCv China于仕琪团队、邓伟洪团队贡献。1、介绍基于深度学习的人脸识别基本上分为两步完成,脸检测与对齐:人脸检测与landmark检测,实现人脸对齐,分为2D/3D对齐人脸特征提取与识别;提取人脸特征数据从128维到2048维都有可能,获取特征之后识别识别按应用情形分2种:一种是1:1称为比对或验证,确定两张人脸是否为同一人;另外一种1:N称为鉴别或识别,从N个人脸中找出最相近的一个。原创 2022-01-13 22:11:44 · 3373 阅读 · 0 评论 -
opencv contrib模块 示例 WeChat qrcode微信二维码检测解码
在opencv 4.5.3 的 contrib中, 腾讯WeChatCV团队贡献了wechat_qrcode模块,3行代码即可在opencv中实现微信的扫码功能。Wechat QRCode 使用2个CNN模型,一个用于检测二维码的的包围框bounding box,另一个用于在二维码较小或有变形时的超分辨率重建。......原创 2022-01-09 15:17:03 · 11530 阅读 · 4 评论 -
java ndk编译opencv、opencv_contrib编译和使用相机Aruco姿态估计
OpenCV3.1时代开始,Android平台就已经有官方提供的OpenCV库了,理论上我们是不需要再自行编译的。而且OpenCV的官方建议也是直接使用OpenCV4Android库(也就是预编译的libopencv_java3.so),并提供了两套使用方法:利用OpenCV提供的全套Java接口, 在Android Java层调用。利用OpenCV提供的C/C++ 接口, 在JNI层使用(就跟在PC端VC++下使用OpenCV一样一样的)。是由于在实际的应用中难免会遇到一些问题,比如在Andro原创 2021-12-30 22:47:08 · 5728 阅读 · 19 评论 -
opencv使用h264_omx进行ffmpeg编码的问题
使用opencv打开摄像头,对每一帧画面进行图像处理,之后使用ffmpeg进行H264编码,最后保存/发送编码数据。使用opnecv图像处理后能够获取编码为 rgb24 和yuv420p 的 cv::Mat 图像数据,ffmpeg的H264 encoder可以选诸如libx264、h264_omx等编码器。首先给出一个基本的测试流程代码,如下。1、Windows测试libx264编码在winodws下使用libx264编码器,要求输入为yuv420p图像数据。代码中函数RaspiEncode_In原创 2021-09-21 10:30:38 · 1530 阅读 · 0 评论 -
opencv 多目(含双目)视觉三维点重构,内参、外参标定详解
opencv 多目(双目)视觉三维点重构,包含理论部分和代码实现测试两个部分。理论部分,包括相机内参标定推导(图像的外参、畸变系数推导),相机之间的外参推导流程。 代码实现部分,相机标定主要以opencv现有函数实现,主要以相机间外参的求解,以及多相机视角下三维点重构的实际测试结果。原创 2020-11-23 13:20:10 · 1802 阅读 · 2 评论 -
opencv中图像色彩空间变换
opencv颜色空间转换1、 rgb转yuvwin下使用bgr通道顺序。 目前仅3种转换。要求图像宽、高是2的倍数。cv::Mat yuv, yuvI420, yuvYV12;cv::cvtColor(img, yuv, cv::COLOR_BGR2YUV);cv::cvtColor(img, yuvI420, cv::COLOR_BGR2YUV_I420);cv::cvtColo...原创 2020-04-30 14:57:45 · 1498 阅读 · 0 评论 -
opencv的Mat通道交换
先以3通道为例,描述多种方式进行通道交换;后以常规Blob的4维(N×C×H×W, C=3的BGR图像)数组进行演示。使用函数为split、merge、mixChannel等。原创 2019-01-29 14:38:09 · 6219 阅读 · 0 评论 -
opencv dnn模块 Net Layer
opencv dnn模块 Net Layer简单介绍原创 2019-01-31 17:08:19 · 3928 阅读 · 1 评论 -
opencv dnn模块 示例(1) 图像分类 classification
使用opencv的dnn模块读取caffe的模型squeezenet,对输入图像进行分类原创 2019-01-30 13:25:00 · 5167 阅读 · 10 评论 -
opencv dnn模块 示例(2) 目标检测 object_detection (1) OpenCV's face detection network
opencv4的dnn模块读取深度学习模型进行目标检测原创 2019-01-31 13:22:38 · 1762 阅读 · 1 评论 -
opencv dnn模块 示例(3) 目标检测 object_detection (2) YOLO object detection
opencv dnn模块 示例(2) 目标检测 object_detection (2) YOLO object detection原创 2019-02-01 13:24:38 · 3811 阅读 · 6 评论 -
opencv dnn模块 示例(4) 目标检测 object_detection (3) caffe SSD
opencv dnn模块 目标检测 object_detection caffe mobile ssd原创 2019-02-01 13:40:18 · 2301 阅读 · 0 评论 -
opencv dnn模块 示例(5) 目标检测 object_detection (4) TensorFlow SSD
opencv dnn模块 目标检测 object_detection tensorflow ssd原创 2019-02-01 14:02:50 · 1809 阅读 · 0 评论 -
opencv dnn模块 示例(7) openpose关键点
opencv dnn openpose关键点检测。三个模型测试 coco、mpi、hand。原创 2019-02-12 15:31:07 · 5861 阅读 · 11 评论 -
opencv dnn模块 示例(6) 目标检测 object_detection (5) TensorFlow Faster-RCNN
opencv dnn模块 目标检测 object_detection tensorflow faster-rcnn原创 2019-02-01 14:42:40 · 1428 阅读 · 0 评论 -
opencv dnn模块 示例(8) 语义分割 segmentation(ENet/fcn8s)
opencv的dnn模块进行semantiic segmentation语义分割:ENet道路场景分割,fcn8s的voc数据集分割原创 2019-02-27 19:44:12 · 7470 阅读 · 61 评论 -
opencv dnn模块 示例(9) 使用 Intel's Inference Engine
Deep Learning Deployment Toolkit from the OpenVINO™ toolkit R4opencv dnn模块使用Intel's Deep Learning Inference Engine backend进行inference.原创 2019-02-27 19:50:42 · 5084 阅读 · 6 评论 -
opencv dnn模块 示例(10) mask rcnn inception V2
opencv的dnn模块测试mask rcnn,使用inception v2结构,进行结果实例化结果输出原创 2019-03-04 13:24:51 · 2946 阅读 · 21 评论 -
opencv dnn模块 示例(11) 灰度图彩色化 colorization
opencv dnn模块对灰度图(彩色图L通道)进行彩色化,推理出a,b通道, 合并L,a,b转换成彩色图。原创 2019-03-12 14:36:06 · 1625 阅读 · 1 评论 -
opencv dnn模块 示例(12) 图像风格化 style transfer
opencv dnn模块图像风格化转换,使用fast-neural-style.原创 2019-03-12 15:43:01 · 1523 阅读 · 6 评论 -
opencv dnn模块 示例(13) 自然场景文本检测 Scene Text Detector-EAST
opencv的dnn模块,加载tf模型east进行自然场景文本检测。原创 2019-03-13 14:34:16 · 4630 阅读 · 21 评论 -
opencv dnn模块 示例(14) 添加自定义层、使用第三方模型
在opencv中dnn模块添加自定义层,先对caffe中AllPassLayer进行测试,不带训练学习参数,再添加自定义的卷积层,有训练学习参数。对opencv中添加自定义层的整个流程进行了简单介绍。原创 2019-05-08 14:20:21 · 5034 阅读 · 7 评论 -
opencv dnn模块 示例(15) opencv4.2版本dnn支持cuda加速(vs2015异常解决)
opencv在4.2.0版本正式发布,DNN深度神经网络模块集成Google Summer of Code的项目CUDA后端支持。原创 2019-12-31 14:00:43 · 8893 阅读 · 14 评论 -
OpenCv2 学习笔记(1) Mat创建、复制、释放
opencv和VS2013的安装图文教程网上有很多,建议安装好之后,用VS2013建立一个空工程,用属性管理器分别新建一个对应debug和release工程的props配置文件,以后直接根据工程需要添加对应配置文件,而不需要每次新建工程后填写引用目录、库目录、附加依赖项,减少重复工作。(用WLW编辑,段间距有点大!)需要说明的是,本学习笔记不会按照先讲数据结构,再讲如何使用。与OpenCv1....原创 2016-11-13 19:45:35 · 69232 阅读 · 0 评论 -
OpenCv2 学习笔记(2) Mat图像显示
在学习笔记(1)中已经提到opencv2.x及3.x中用Mat代替了CvMat和IplImage,也就是说Mat既可以代替CvMat类型矩阵数据,也可以代替IplImage类型的图像数据,也就是说Mat统一了前两中数据结构。因此在OpenCv2中对矩阵数据和图像数据都可以进行显示。主要的三个函数如下1、imread()原型为C++: Mat imread(const string&...原创 2016-11-13 19:45:54 · 8263 阅读 · 0 评论 -
OpenCv2 学习笔记(3) Mat、CvMat和IplImage的相互转化
在opencv2.4.9有一些函数仍然是没有C++接口,因此在opencv2中有时需要用到CvMat或者IplImage,那么这些数据结构之间怎么彼此进行转换是需要考虑的一个问题。我们可以从需要的一种数据结构中读取并赋值到新的数据结构中去,这是一种深复制。通常我们需要的的是数据本身,而不是需要对数据进行更改,因此选择opencv自带的函数是比较合适的,因为大多数的函数都是浅复制。1、Mat –...原创 2016-11-13 19:46:07 · 909 阅读 · 0 评论 -
OpenCv2 学习笔记(4) OpenCv基本的数据类型
Mat的详细讲述安排在下一节,本节将简要介绍其他最常用的几个数据类型,包括Point_、Point3_、Size_、Rect_、Matx、Vec、Scalar_等,分别为二维点、三维点、尺寸、矩形、小矩阵、小向量、标量等模板类。1、Point_可以理解为二维点,包括下面的int、float和double3三种类型的二维点。typedef Point_<int> Point...原创 2016-11-19 13:16:02 · 2951 阅读 · 2 评论 -
OpenCv2 学习笔记(5) Mat类详解
Mat的内容非常多,大致可以分类 构造函数、成员函数2个大板块。1、Mat构造函数Mat::MatC++: Mat::Mat()C++: Mat::Mat(int rows, int cols, int type)C++: Mat::Mat(Size size, int type)C++: Mat::Mat(int rows, int cols, int type, const ...原创 2016-11-21 21:37:47 · 11222 阅读 · 2 评论 -
OpenCv2 学习笔记(6) Mat元素访问和效率比较
上一个学习笔记中对Mat进行了详细的介绍,并且简单介绍了Mat元素访问的3种基本方法,通过ptr行指针、data数据指针和at模板函数。本章以二维矩阵为例,对各种访问方式进行详细的介绍,并给出各种访问方式在debug模式下的效率对比结果。1、执行时间获取要比较执行效率,就要获取某一段程序执行的时间,可以利用opencv提供的c接口和c++接口两种方法,都是利用系统计数和单位时间计数频率计算...原创 2016-11-21 21:38:02 · 6044 阅读 · 1 评论