
OpenCV
文章平均质量分 57
OpenCV 相关技术
许野平
非常喜欢软件设计这份工作,有不错的数学基础,喜欢读书、摄影与音乐。
展开
-
gStreamer 的 gst-rtsp-server 安装方法
1. 安装依赖包$ sudo apt-get install gtk-doc-tools libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa g原创 2021-04-13 18:30:59 · 4606 阅读 · 5 评论 -
GpuMat 在 OpenCV 不同版中的声明
代码如下:#if CV_VERSION_EPOCH == 2#define OPENCV2#include <opencv2/gpu/gpu.hpp>namespace GPU = cv::gpu; #elif CV_VERSION_MAJOR == 3#define OPENCV3#include <opencv2/cudaimgproc.hpp>namespace GPU = cv::cuda; #elif CV_VERSION_MAJOR == 4#原创 2021-03-25 19:26:42 · 299 阅读 · 0 评论 -
GStreamer 代码详解:连接 IP 网络摄像机
0. 源代码下面是本文讨论的代码。我试了一下,扩展名必须是 *.c,改成 *.cpp 的话无法编译。这个原因我回头再研究。#include <gst/gst.h>int main (int argc, char *argv[]){ GstElement *pipeline; GstBus *bus; GstMessage *msg; gst_init (&argc, &argv); pipeline = gst_parse_launch("play原创 2021-01-17 17:40:19 · 961 阅读 · 2 评论 -
GStreamer官方入门课程8:短切管道——如何把数据灵活读出或写入管道
使用GStreamer建造的管道不需要完全封闭。数据可以随时以各种方式注入管道并从中提取。本教程显示:如何将外部数据注入通用GStreamer管道。如何从通用GStreamer管道中提取数据。如何访问和操作这些数据。回放教程3:缩短管道说明如何在基于playbin的管道中实现相同的目标。1. 引言应用程序可以通过多种方式与通过GStreamer管道的数据交互。本教程介绍了最简单的一个,因为它使用的元素都是为此目的创建的。用于将应用程序数据注入GStreamer管道的元素是appsrc,用于原创 2020-06-20 18:23:43 · 1928 阅读 · 0 评论 -
GStreamer官方入门课程7:如何在多线程环境下设计管道?如何掌控Pad可用性?
GStreamer自动处理多线程,但在某些情况下,您可能需要手动分离线程。本教程展示了如何做到这一点,此外,完成了关于Pad可用性的说明。更准确地说,本文件解释了:如何为管道的某些部分创建新的执行线程Pad的可用性是多少如何复制流1. 引言(1) 多线程GStreamer是一个多线程框架。这意味着,在内部,它会根据需要创建和销毁线程,例如,将流与应用程序线程分离。此外,插件也可以自由创建线程来进行自己的处理,例如,一个视频解码器可以创建4个线程来充分利用一个具有4个内核的CPU。除此之外,当构原创 2020-06-17 19:31:28 · 928 阅读 · 0 评论 -
GStreamer连接 IP 网络摄像机的实际例子
GStreamer 基本教程中的第一个实例,我把信号源的连接串改成了大华摄像机:basic-tutorial-1.c#include <gst/gst.h>intmain (int argc, char *argv[]){ GstElement *pipeline; GstBus *bus; GstMessage *msg; /* Initialize GStreamer */ gst_init (&argc, &argv); /* Bui原创 2020-06-15 11:07:48 · 1138 阅读 · 0 评论 -
GStreamer入门教程源代码解析:basic-tutorial-1.c
#include <gst/gst.h>intmain (int argc, char *argv[]){ GstElement *pipeline; GstBus *bus; GstMessage *msg; /* Initialize GStreamer */ gst_init (&argc, &argv); /* Build the pipeline */ pipeline = gst_parse_launch原创 2021-03-17 16:38:38 · 712 阅读 · 0 评论 -
GStreamer官方入门课程5:把GStreamer与你的图形界面集成在一起
本教程演示如何将GStreamer集成到像GTK+这样的图形用户界面(GUI)工具包中。基本上,GStreamer负责媒体播放,而GUI工具包处理用户交互。最有趣的部分是两个库必须交互的部分:指示GStreamer将视频输出到GTK+窗口,并将用户操作转发到GStreamer。特别是,你将学到:如何告诉GStreamer将视频输出到特定窗口(而不是创建自己的窗口)。如何使用来自GStreamer的信息不断刷新GUI。如何从GStreamer的多线程中更新GUI,这是大多数GUI工具包禁止的操作。原创 2020-06-12 15:31:22 · 2911 阅读 · 0 评论 -
GStreamer官方入门课程4:你会查询和控制多媒体流的时间属性吗?
本教程演示如何使用GStreamer时间相关工具。特别地:1. 如何查询管道中的流位置或持续时间等信息。2. 如何在流中寻找(跳转)到不同的位置(时间)。原创 2020-06-12 14:49:09 · 877 阅读 · 0 评论 -
GStreamer官方入门课程3:面向复杂媒体流,教你如何动态构建 GStreamer 复杂管道
1. 目标本教程展示了使用GStreamer所需的其他基本概念,这些概念允许在信息可用时“动态”构建管道,而不是在应用程序的开头定义单片管道。在本教程之后,您将拥有开始播放教程所必需的知识。这里回顾的要点是:如何在链接元素时获得更好的控制。如何得到有趣事件的通知以便及时做出反应。元素可以处于的各种状态。2. 介绍正如您将要看到的,本教程中的管道在设置为播放状态之前并没有完全构建。这没关系。如果我们不采取进一步的措施,数据将到达管道的末端,管道将生成错误消息并停止。但我们会采取进一步的行动…原创 2020-06-11 14:47:14 · 1299 阅读 · 0 评论 -
GStreamer官方入门课程2:基本概念
1. 目标上一个教程演示了如何自动构建管道。现在,我们将通过实例化每个元素并将它们链接在一起来手动构建一个管道。在此过程中,我们将学到:什么是GStreamer元素以及如何创建它。如何将元素相互连接。如何自定义元素的行为。如何监视总线的错误情况并从GStreamer消息中提取信息。2. 手动Hello World将此代码复制到名为basic-tutorial-2.c的文本文件中(或在GStreamer安装中找到它)。basic-tutorial-2.c#include <gst/原创 2020-06-11 13:56:02 · 669 阅读 · 0 评论 -
GStreamer官方入门课程1:Hello World!
没有什么比在屏幕上打印“Hello World”更能给人留下软件库的第一印象了!但既然我们要处理多媒体框架,我们就要播放视频了。不要被下面的代码量吓倒:只有4行代码可以完成真正的工作。剩下的是清理代码,在C语言中,这总是有点冗长。不用再费吹灰之力,准备好您的第一个GStreamer应用程序...原创 2020-06-11 13:10:02 · 857 阅读 · 0 评论 -
GStreamer官方入门课程一览表,快速帮你找到自己需要的范例
这里列一个GStreamer入门课程清单,大家按需选择吧。原创 2020-06-11 12:23:19 · 1990 阅读 · 0 评论 -
想学习做视频、音频多媒体开发,必须得先看看 GStreamer 官网教程有哪些关键内容
欢迎来到GStreamer教程!以下各节介绍一系列教程,旨在帮助您学习如何使用GStreamer,这是一个多平台、模块化、开源的媒体流框架。原创 2020-06-11 12:12:26 · 494 阅读 · 0 评论 -
不懂得 GStreamer 就别做视频算法了,跟我一起去搂搂官网,看看如何安装
啥都不说了,先给个地址:https://gstreamer.freedesktop.org/documentation/index.html?gi-language=c作为 C/C++ 的开源库,当然是各种平台通吃。安装很简单,我用的是 Ubuntu 18.04,按照 Installing on Linux 安装步骤一次成功,没有任何悬念。一、先决条件GStreamer包含在所有Linux发行版中。我们建议使用快速移动发行版的最新版本,如Fedora、Ubuntu(非LTS)、Debian s.原创 2020-06-11 11:55:52 · 1083 阅读 · 0 评论 -
GStreamer官方入门课程6:如何用Pad(焊点)把GStreamer元素链接在在一起?看一下媒体格式和 Pad 能力分析
Pad功能是GStreamer的一个基本元素,尽管大多数时候它们是不可见的,因为框架会自动处理它们。这个理论性的教程显示:什么是Pad功能。如何找回它们。何时取回它们。为什么你要知道他们。1. 引言(1) Pads正如已经显示的那样,Pads允许信息进入和离开元素。Pad的功能(简称Caps),然后,指定什么样的信息可以通过Pad。例如,“分辨率为320x200像素和每秒30帧的RGB视频”,或“每采样音频16位,每秒44100个采样的5.1通道”,甚至mp3或h264等压缩格式。pad原创 2020-06-16 16:01:51 · 822 阅读 · 0 评论 -
基于 OpenCV 和 GStreamer 显示 RTSP 视频流
我在 stackoverflow 上看到一个讨论话题,选择其中有价值的部分,整理一下供大家参考。问题IP 摄像机的 RTSP URL 地址为 rtsp://admin:@192.168.0.27/channel=1&stream=0.554. 用 OpenCV 打开这个视频流。#include <opencv2/opencv.hpp>int main() { cv::VideoCapture cap; if (!cap.open("rtsp://admin:@192原创 2021-03-17 16:30:42 · 7845 阅读 · 0 评论 -
摄像头的MIPI接口、DVP接口和CSI接口
我们常用的电脑摄像头接口是USB接口,而常见的智能手机上的摄像头是MIPI接口,还有一部分的摄像头(比如说某些支持DVP接口的硬件)是DVP接口;通俗的讲,USB是串行通用串行总线(Universal Serial Bus)的简称,而MIPI是移动行业处理器接口(Mobile Industry Processor Interface),DVP是数字视频端口(digital video port)的简称,CSI是相机串行接口(CMOS Sensor Interface)的简称。Camera 工作原理介绍一原创 2021-03-17 14:13:54 · 59104 阅读 · 3 评论 -
处理:./src/image_opencv.cpp:131:20: error: ‘CV_CAP_PROP_FRAME_WIDTH’ was not declared in this scope
把 CV_ 前缀去掉,因为 OpenCV4以上的版本,把这个常量名称前面的 CV_ 给去掉了。原创 2021-01-30 14:56:29 · 1969 阅读 · 0 评论 -
处理:‘IplImage’ does not name a type; did you mean ‘image’?
编译 darknet 的时候出现这个错误,把 home/darknet/src/imageopencv.cpp 修改如下:#ifdef OPENCV#include "stdio.h"#include "stdlib.h"#include "opencv2/opencv.hpp"#include "image.h"using namespace cv;extern "C" {/*IplImage *image_to_ipl(image im){ int x,y,c;原创 2021-01-30 14:48:14 · 2815 阅读 · 2 评论 -
Opencv 中 FOURCC 编码
FOURCC 是“Four character code”的缩写,也称为4CC。编码定义如下:0-91978: A.M.Paredes predictor2VUY: 2VUY / BlackMagic3IV0: 3ivx3IV1: 3ivx3IV2: 3ivxADVERTISEMENTS3IVD: FFmpeg DivX (MS MPEG-4 v3)3IVX: 3ivx8BPS: Planar RGB CodecAAAS4: Autodesk Animator codec (RLE)原创 2021-01-28 16:51:08 · 5702 阅读 · 0 评论 -
终于解决:CUDA: OpenCV requires enabled ‘cudev‘ module from ‘opencv_contrib‘
用 cmake-gui 配置 WITH_CUDA 时出现这个错误提示。CMake Error at modules/core/CMakeLists.txt:40 (message): CUDA: OpenCV requires enabled 'cudev' module from 'opencv_contrib' repository: https://github.com/opencv/opencv_contrib按照错误提示解决方案提供的网址:https://github.com/ope原创 2021-01-27 12:35:09 · 10652 阅读 · 2 评论 -
OpenCV 无法打开 rtsp 视频流的解决方法
终于安装配置完成 OpenCV,兴冲冲写了个 rtsp 网络摄像头测试程序,结果连不上, 查了以下资料,原来...原创 2021-01-20 15:23:58 · 4613 阅读 · 1 评论 -
今天我特别高兴,因为总算跨进了Linux的世界!
前几年用 Go 语言写了服务器程序,扔到云服务中,一口气跑到今天,还在正常工作。虽然在 CentOS 下开发部署,但是我觉得自己对 Linux 这个体系真的是一点也不了解。从这个角度看,Go 语言用起来的确简单!最近打算用 C++ 搞点视频方面的开发,结果在 ubuntu 上安装英伟达显卡、CUDA、opencv 等等,还没整深度学习那些框架呢,就要把我给折腾死了。这两天,下了狠心,梳理一下思路,把 Linux 下开发环境相关的原理性的东西彻底搞明白了,结果怎么试验都不出错了。写了一段 opencv 的小原创 2021-01-16 17:55:51 · 215 阅读 · 0 评论 -
快速指南:pkg-config 的原理和使用方法
安装完 OpenCV-4.5.1,打算编译一个程序看看,你知道需要连接多少可静态库吗?用下面命令可以查看:$ pkg-config --libs opencv4-L/usr/local/lib -lopencv_highgui -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_stitching -lopencv_video -lopencv_calib3d -lopencv_features2d -lopencv_dnn -lopencv_f原创 2021-01-16 17:22:25 · 2556 阅读 · 0 评论 -
快速指南:C/C++程序员如何从 Windows 向 Linux 迁移
老朽在 DOS、Windows 下玩 C/C++ 三十多年了,转到 Linux(Ubuntu)下,感觉整个开发环境乱七八糟、毫无头绪。在安装配置 OpenCV 4.5.1 的时候,经过一番折腾,发现 Linux 和 Windows 没啥本质区别。本文把关键要素稍加整理,供从 Windows 向 Linux 迁移的程序员同行们参考。原创 2021-01-16 16:27:19 · 5081 阅读 · 0 评论 -
OpenCV 4.5.1 在 Ubuntu 18下的安装详解
1. 下载源代码首先下载源代码,官网下载比较费时,搞了三天都没下来,在 优快云 上找了一下资源解决此问题。2. 把源代码复制到和是目录因为支持 cmake,所以这个过程反而不复杂。在 home 目录建了个文件夹 opencv ,代码拷贝近来,这个文件夹的位置并不重要,因为后面有一个安装步骤,可以把将来开发需要的头文件、编译好的库文件等安装到各自的部署文件夹中。3. 安装 ubuntu 需要的功能具体过程我参考了网上的介绍,过程如下。下面的三条命令,是安装 ubuntu 操作系统需要的功能。如果原创 2021-01-16 12:39:41 · 1530 阅读 · 3 评论