TX1使用OpenCV3.1实时采集视频图像

转载请注明作者和出处: http://blog.csdn.net/c406495762

嵌入式平台(Target): Jeston TX1

OpenCV: OpenCV3.1

摄像头: USB 800W摄像头

  • 前言
  • 下载OpenCV3
  • 安装依赖库
  • 编译并安装OpenCV3
  • 运行hog例程
    • 1 编译并运行例程
    • 2 运行结果
  • 编写简单的摄像头采集程序
    • 1 代码如下
    • 2 运行结果
  • 可能遇到的问题

1 前言

Jetpack3.0安装的OpenCV是OpenCV2.4.13,OpenCV2.4.13对于USB摄像头支持不好。NVIDIA以后更新的Jetpack会解决对USB摄像头支持不好的问题,在官方解决之前,一个临时的解决方案就是自己编译OpenCV3.1。

2 下载OpenCV3

URL : http://www.opencv.org/releases.html

点击Sources下载源码:

3 安装依赖库

# Some general development libraries
sudo apt-get install -y build-essential make cmake cmake-curses-gui g++
# libav video input/output development libraries
sudo apt-get install -y libavformat-dev libavutil-dev libswscale-dev
# Video4Linux camera development libraries
sudo apt-get install -y libv4l-dev
# Eigen3 math development libraries
sudo apt-get install -y libeigen3-dev
# OpenGL development libraries (to allow creating graphical windows)
sudo apt-get install -y libglew1.6-dev
# GTK development libraries (to allow creating graphical windows)
sudo apt-get install -y libgtk2.0-dev

4 编译并安装OpenCV3

cd ~
mkdir src
cd src
unzip ~/Downloads/opencv-3.1.0.zip
cd opencv-3.1.0
mkdir build
cd build
cmake -DWITH_CUDA=ON -DCUDA_ARCH_BIN="5.3" -DCUDA_ARCH_PTX="" -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DCUDA_FAST_MATH=ON -DCMAKE_INSTALL_PREFIX=/home/ubuntu/opencv-3.1.0 ..
make -j4 install

5 运行hog例程

5.1 编译并运行例程

cd ~/src/opencv-3.1.0/samples/gpu
g++ -o hog -I /home/ubuntu/opencv-3.1.0/include -O2 -g -Wall hog.cpp -L /home/ubuntu/opencv-3.1.0/lib -lopencv_core -lopencv_imgproc -l opencv_flann -l opencv_imgcodecs -lopencv_videoio -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_objdetect -lopencv_photo -lopencv_features2d -lopencv_calib3d -lopencv_stitching -lopencv_videostab -lopencv_shape -lopencv_cudaobjdetect -lopencv_cudawarping -lopencv_cudaimgproc
export LD_LIBRARY_PATH=/home/ubuntu/opencv-3.1.0/lib:$LD_LIBRARY_PATH
./hog --camera 0
  • export LD_LIBRARY_PATH=/home/ubuntu/opencv-3.1.0/lib:$LD_LIBRARY_PATH:添加LIBARARY,这个只是临时添加,永久添加可以放到~/.bashrc中,并使用source ~/.bashrc“激活”设置的环境变量;
  • ./hog –camera 0:最后一个参数0,代表使用/dev/video0设备,如果TX1插上板载的CSI摄像头,又插上USB摄像头,这个0,应该改为1。可以通过ls /dev/ | grep video*,查看有那些video设备。

5.2 运行结果

6 编写简单的摄像头采集程序

6.1 代码如下

#include <stdio.h>
#include <opencv2/opencv.hpp>  

using namespace cv;
using namespace std;  

int main(int argc, char** argv)
{
    VideoCapture cap("nvcamerasrc ! video/x-raw(memory:NVMM), width=(int)1280, height=(int)720,format=(string)I420, framerate=(fraction)24/1 ! nvvidconv flip-method=2 ! video/x-raw, format=(string)BGRx ! videoconvert ! video/x-raw, format=(string)BGR ! appsink");
    if (!cap.isOpened())
    {
        cout << "Failed to open camera." << endl;
        return -1;
    }  

    for(;;)
    {
        Mat frame;
        cap >> frame;
        imshow("original", frame);
        //waitKey(1);
        if(waitKey(30) >= 0)
        break;
    }
    return 0;
}

6.2 运行结果

PS : 阳光原因,图像有些泛白,见谅

7 可能遇到的问题

在make的时候,我们可能遇到如下error:

解决办法:需要修改一处源码,在graphcuts.cpp中将

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)

改为:

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)

如下图所示:

时间: 2024-10-08 14:54:32

TX1使用OpenCV3.1实时采集视频图像的相关文章

基于SDRAM的视频图像采集系统

本文是在前面设计好的简易SDRAM控制器的基础上完善,逐步实现使用SDRAM存储视频流数据,实现视频图像采集系统,CMOS使用的是OV7725. SDRAM控制器的完善 1. 修改SDRAM的时钟到100Mhz 系统时钟提了上来下面对应的时间参数就需要注意,再50Mhz下的这些时间参数的计数器的都需要做相应的修改. 2. 写入一幅图像(640 * 480)到SDRAM 640 * 480 = 307200个数据 307200 / 256 = 1200行,所以我们只需要写入1200行数据写满即可.

高铁监测无线采集视频无线传输 长距离无线传输设备

方案需求 外部原因及天气环境,强风.洪水.隧道应力.桥梁倾斜,路基沉降等.这些危害比较直观,体现也很明显,一旦产生,对速度飞快的高速列车来讲,后果也比较严重.为了避免这些因素引起的灾害发生,安全监测监控技术应运而生.通过自动化系统,实时监测各个道路的信息,并将这些采集到的信息传送到远端的调度中心,由调度中心统一管理并判断发生危险的可能性,及时的通知到各个路段的行车,警告车辆注意前方会有何种危险,这样就形成了一个安全检测系统. 技术部署 运行状态监控系统,系统以物联网通信技术为基础,通过LoRa组

视频图像去模糊常用处理方法

视频图像去模糊常用处理方法 随着“平安城市”的广泛建设,各大城市已经建有大量的视频监控系统,虽然监控系统己经广泛地存在于银行.商场.车站和交通路口等公共场所,但是在公安工作中,由于设备或者其他条件的限制,案情发生后的图像回放都存在图像不清晰,数据不完整的问题,无法为案件的及时侦破提供有效线索.经常出现嫌疑人面部特征不清晰,难以辨认,嫌疑车辆车牌模糊无法辨认等问题.这给公安部门破案.法院的取证都带来了极大的麻烦.随着平安城市的推广.各地各类监控系统建设的进一步推进,此类问题会越来越突出. 一.模糊

实时音视频互动系列(上):又拍云UTUN网络详解

如何定义实时音视频互动, 延迟 400ms 内才能无异步感 实时音视频互动如果存在1秒左右的延时会给交流者带来异步感,必须将视频播放延迟限制在400ms以内,才能给用户较好的交互体验. 当延迟控制在400ms以内时,两个人音视频互动是实时的,不会有异步感存在,即实时音视频互动. 实时音视频互动产生延迟的原因 音视频互动的延迟是如何产生的? 我们先假设这样一个场景:位于北京的A客户端与位于广州的B客户端进行实时音视频互动. 该场景会有以下几个产生延迟的原因: 光的传输耗时 30ms: 网络处理耗时

从零到一,使用实时音视频 SDK 一起开发一款 Zoom 吧

zoom(zoom.us) 是一款受到广泛使用的在线会议软件.相信各位一定在办公.会议.聊天等各种场景下体验或者使用过,作为一款成熟的商业软件,zoom 提供了稳定的实时音视频通话质量,以及白板.聊天.屏幕共享.PPT放映等常用功能.但是在当今浏览器成为端上主流的时代,实时音视频又怎甘于落后呢?相比于需要安装包的 Zoom,直接在网页上开发一款类似的会议软件肯定会受到更多的关注.当需要开会的时候,直接通过一个链接,大家就可以接入并开始会议了.现在,使用七牛实时音视频的 Web SDK,我们可以将

实时音视频技术难点及解决方案

对于一个实时互动的音视频系统而言,存在很多技术难点,有几个比较重要的点: 首先是低延迟,如果要满足比较流畅地进行实时互动,那么单向的端到端的迟延大概要在400毫秒以下才能保证流畅沟通; 第二点就是流畅性,你也很难想象在视频过程中频繁卡顿会有良好的互动; 第三点是回声消除,回声的产生是扬声器播放的声音经过环境反射被麦克风重新采集并传输给对方,这样对方就会一直听到自己的回声,整个互动过程会非常难受; 第四点是国内外互通,随着现在国内同质化产品越来越多,国内的竞争也异常激烈,很多厂商纷纷选择出海,这时

如何解决教育互动录播系统无法采集本地图像

在教育互动录播系统中,视频图像信息及其重要,因为它在其中为老师和学生提供着重要的知识交流渠道.那么如何解决教育录播系统无法采集本地图像呢? 对于在应用过程中,无法对本地图像采集的问题,用户可以从三个方面入手: 1.首先,查看摄像头连接是否正确,在实际安装过程中,由于操作人员的疏忽或是理解错误,经常会造成此类问题的出现; 2.其次,查看系统是否被其他程序占用,主要是针对桌面软件终端; 3.最后,查看视频输入设备选择的是否正确,这个问题也是多有安装人员的疏忽造成. 目前,教育录播教学系统都是采用当前

基于matlab的音频波形实时采集显示 v0.1

robj = audiorecorder(44100,16,1); %设置采样频率.采样位数.通道数 recordblocking(robj,1); %采集初步数据(1s长度) rdata = getaudiodata(robj); %获取音频数据 plot(rdata); %绘制波形 axis([1,44100,-0.1,0.1]); %设置固定坐标轴 drawnow %刷新显示 n = 100; %设定后续的采样更新次数,n与m可联合计算后续更新时间长度 m = 0.1; %设定更新间隔,m

如何优化传输机制来实现实时音视频的超低延迟?

1.前言 要在语音视频 SDK 中实现超低延迟,实时的语音视频传输机制是必不可少的,而 FEC 和 ARQ 的智能结合是实时语音视频传输机制的基石. 在语音社交.视频社交.游戏语音和互动直播等领域,关于在语音视频实时传输中实现低延迟这个议题,已经有不少的文章提出各种方案.绝大部分方案的思路都是"优化",比如说,优化编码.推流.传输和播放等各个环节. 愚以为,要在实时语音视频传输中获得超低延迟,是不能单靠挖空心思去"优化"的,而是要依靠实时的传输机制.就像高铁和火车有