ubuntu22.04下用opencv4.5.4访问照片、视频、摄像头

这篇具有很好参考价值的文章主要介绍了ubuntu22.04下用opencv4.5.4访问照片、视频、摄像头。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文主要记录近期在学习opencv使用过程中的一些细节

前言:ubuntu22.04 OpenCV4.6.0(c++)环境配置

opencv的安装过程可参考下面博文,亲测有效(容易出现问题的地方在安装下面依赖的时候,一般会出现报错,需要自己换源,否则后面可能会出现打不开照片或者打开照片是空白的问题)

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev libjasper-dev  

博文参考:(3条消息) ubuntu22.04 OpenCV4.6.0(c++)环境配置_路飞DoD的博客-CSDN博客

一、查看opencv版本

运行终端,输入下面指令,查看opencv版本

pkg-config --modversion opencv4

会出现下面情况,这里我的opencv版本是4.5.4(不同版本信息显示不同)

ubuntu22.04下用opencv4.5.4访问照片、视频、摄像头,Linux系统编程,知识储备,c++,开发语言

 若下面指令查询不到,可能是opencv版本问题,可以输入下面命令查看

pkg-config opencv --modversion

二、用c++访问opencv库访问照片,视频,摄像头拍照

在home目录新建文件夹digital

ubuntu22.04下用opencv4.5.4访问照片、视频、摄像头,Linux系统编程,知识储备,c++,开发语言

ubuntu22.04下用opencv4.5.4访问照片、视频、摄像头,Linux系统编程,知识储备,c++,开发语言

cd digital   //进入digital

touch CMakeLists.txt   //创建cmake编译文本

mkdir -p build    //创建build 文件夹,用于生成系统所需构建文件

mkdir -p img     //创建img文件夹,用于存放照片,视频

mkdir -p src      //创建src文件夹,用于存放cpp文件

这里先通过下面指令显示我实现后digital 的二层目录

tree -L 2

ubuntu22.04下用opencv4.5.4访问照片、视频、摄像头,Linux系统编程,知识储备,c++,开发语言

CMakeLists.txt内容(cmake构建opencv项目)

cmake_minimum_required(VERSION 2.8) //最低版本
project( digital )                   //项目名称
find_package( OpenCV REQUIRED )     //添加opencv库到本项目
include_directories( ${OpenCV_INCLUDE_DIRS} ) //添加opencv头文件路径
add_executable( demo src/demo.cpp )         //添加可执行文件
add_executable( demo1 src/demo1.cpp )       //这里对应三个cpp
add_executable( demo2 src/demo2.cpp )        //即访问照片、视频、摄像头
target_link_libraries( demo ${OpenCV_LIBS} ) //链接opencv库到可行性文件
target_link_libraries( demo1 ${OpenCV_LIBS} )
target_link_libraries( demo2 ${OpenCV_LIBS} )

demo.cpp内容(opencv访问照片)

#include <opencv2/opencv.hpp>
#include <iostream>

int main(int argc, char** argv)
{
    // 读取图片
    cv::Mat image = cv::imread("/home/zyf/digital/img/yunyun.jpg");//自己的照片

    // 确认图片读取成功
    if(image.empty())
    {
        std::cerr << "Failed to open image file." << std::endl;
        return -1;
    }
    //控制照片比例
   resize(image, image, cv::Size(500, 500));
    // 显示图片
    cv::imshow("Image with Box", image);

    // 等待按键
    cv::waitKey(0);

    return 0;

demo1.cpp内容(opencv访问视频)

#include <opencv2/opencv.hpp>
using namespace cv;

int main()
{
    // 打开视频文件
    VideoCapture cap("/home/zyf/digital/img/video.mp4");//自己的视频文件

    // 检查视频是否成功打开
    if (!cap.isOpened())
    {
        std::cout << "Error opening video stream or file" << std::endl;
        return -1;
    }

    // 循环读取视频帧
    while (true)
    {
        Mat frame;
        // 读取当前帧
        cap >> frame;

        // 检查是否成功读取帧
        if (frame.empty())
            break;

        // 显示当前帧
        imshow("Frame", frame);

        // 按下 Esc 键退出循环
        if (waitKey(25) == 27)
            break;
    }

    // 释放VideoCapture对象和所有窗口
    cap.release();
    destroyAllWindows();

    return 0;
}

demo2.cpp内容(opencv访问摄像头)

#include <opencv2/opencv.hpp>
#include <iostream>
#include <string>

using namespace std;
using namespace cv;

int main()
{
    // 打开默认摄像头
    VideoCapture cap(0);
    if (!cap.isOpened())
    {
        cout << "无法打开摄像头!" << endl;
        return -1;
    }

    namedWindow("摄像头", WINDOW_NORMAL);

    while (true)
    {
        Mat frame;
        cap >> frame;

        // 显示视频帧
        imshow("摄像头", frame);

        // 按下空格键拍照
        if (waitKey(30) == ' ')
        {
            // 生成文件名
            time_t now = time(NULL);
            tm *ltm = localtime(&now);
            string filename = to_string(ltm->tm_year + 1900) + "-" + to_string(ltm->tm_mon + 1) + "-" + to_string(ltm->tm_mday) + "-" + to_string(ltm->tm_hour) + "-" + to_string(ltm->tm_min) + "-" + to_string(ltm->tm_sec) + ".jpg";

            // 保存图片
            imwrite(filename, frame);
            cout << "已保存照片:" << filename << endl;
        }
    }

    return 0;
}

编译实现

cd build                  //进入build文件夹
cmake ..
make

cmake ..                                       //cmake编译,生成makefile等文件

ubuntu22.04下用opencv4.5.4访问照片、视频、摄像头,Linux系统编程,知识储备,c++,开发语言

make                                           //编译,生成可执行文件

ubuntu22.04下用opencv4.5.4访问照片、视频、摄像头,Linux系统编程,知识储备,c++,开发语言

 文章来源地址https://www.toymoban.com/news/detail-564647.html

此时我们可以看到在build目录会生成可执行文件

ubuntu22.04下用opencv4.5.4访问照片、视频、摄像头,Linux系统编程,知识储备,c++,开发语言

运行可执行文件 

./demo     //执行demo  
./demo1     //执行demo1   
./demo 2    //执行demo2   

./demo  opencv访问照片

ubuntu22.04下用opencv4.5.4访问照片、视频、摄像头,Linux系统编程,知识储备,c++,开发语言

 ./demo1  opencv访问视频

ubuntu22.04下用opencv4.5.4访问照片、视频、摄像头,Linux系统编程,知识储备,c++,开发语言

 ./demo2  opencv访问摄像头

ubuntu22.04下用opencv4.5.4访问照片、视频、摄像头,Linux系统编程,知识储备,c++,开发语言

空格拍照获取一帧数据,.jpg文件

ubuntu22.04下用opencv4.5.4访问照片、视频、摄像头,Linux系统编程,知识储备,c++,开发语言

注意: 这里Linux访问摄像头可能出现黑面现象,先在window访问相机出现下面情况

ubuntu22.04下用opencv4.5.4访问照片、视频、摄像头,Linux系统编程,知识储备,c++,开发语言

 解决方法:

1.安装cheese

重启电脑

在VMware的工具栏选择虚拟机>可移动设备>摄像头>连接。
执行:sudo apt-get install cheese
运行:cheese(一般可以看到图像)

2、如发现cheese界面弹出后,图像是黑屏,但是摄像头连线无误,按钮都处于不可操作状态,需要检查几个部分:

       lsusb查看一下是否有找到摄像头。
  ls /dev | grep video,查看是否有video0。
  如以上两点都有,需要检查的部分是虚拟机设置>usb控制器>usb兼容性>(usb2.0/3.0)。如果当前选中的是2.0就选择3.0,如果当前选中的是3.0就选择2.0。然后确定。
  在VMware的工具栏选择虚拟机>可移动设备>摄像头>断开连接。然后再虚拟机>可移动设备>摄像头名>连接。然后重新打开cheese,发现已经有图像了。

总结:

opencv在linux需要先经过cmake编译安装才能使用,以及下载依赖库,同时还需要配置路径,过程还是有点麻烦,要注意的点是依赖包的下载和路径的配置。

参考文献:

(3条消息) 解决虚拟机下Ubuntu cheese黑屏问题_ubuntu20.04无法打开cheese_cocoaqin的博客-CSDN博客

ubuntu22.04 OpenCV4.6.0(c++)环境配置_路飞DoD的博客-CSDN博客

 

到了这里,关于ubuntu22.04下用opencv4.5.4访问照片、视频、摄像头的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ubuntu22.04:设置Samba服务【Windows访问samba共享提示,你不能访问此共享文件夹】

    1.更新apt储存库列表 2.安装samba 3.验证samba是否安装成功 也可以直接查看版本 或直接查看systemctl进程的方式查看 示例:创建一个narada的目录在/home下 编辑配置文件/etc/samba/smb.conf     [narada]     comment = my share dir     path = /home/narada     browseable = yes     writable = yes 注意,这个

    2024年02月10日
    浏览(49)
  • ubuntu22.04配置双网卡双静态ip不通网段访问服务器的相同服务

    ubuntu22.04配置双网卡双静态ip不通网段访问服务器的相同服务 技术博客 http://idea.coderyj.com/ 1.需求 南方电网网段(假如)是 192.168.3.1的网段 机器人服务器在隧道ip是 172.16.1.1网段 要求这2个网段都能访问到服务器上的服务 2.解决方案 服务器上配置双网卡 双ip 以ubuntu22.04为例 vim /e

    2024年02月12日
    浏览(66)
  • Ubuntu22.04没有ttyUSB(无法访问 ‘/dev/ttyUSB‘: 没有那个文件或目录)问题解决

    环境:ubuntu22.04,使用需求为USB转串口 在给串口读写权限时,出现问题: 无法访问 ‘/dev/ttyUSB0’: 没有那个文件或目录 原因1:USB口没有连接 原因2:brltty驱动占用问题 针对原因1:将设备连接到USB口,再次使用查看命令 结果如图: 针对原因2: sudo dmesg | grep brltty 若果出现

    2024年02月11日
    浏览(107)
  • 【问题记录】Ubuntu 22.04 环境下,打开 VS Code 老是访问密钥环该怎么解决?

    目录 环境 问题情况 解决方法 VMware® Workstation 16 Pro (版本:16.1.2 build-17966106) ubuntu-22.04.2-desktop-amd64 在Ubuntu下,每次运行 VS Code时,老是提示要输入密钥密码来解锁保存在密钥环(keyring)中的凭据。这就弄的我很恼火,如下: 要删除该解锁密钥并停止提示解锁,按照以下详

    2024年02月16日
    浏览(45)
  • ubuntu22.04@laptop OpenCV Get Started: 013_contour_detection

    使用轮廓检测检测物体的边界,通常是许多有趣应用的第一步,如图像前景提取、简单的图像分割、检测和识别。 罗列一些使用轮廓进行运动检测或分割应用: 运动检测:在监控视频中,运动检测技术有许多应用,包括室内和室外安全环境、交通控制、体育活动中的行为检

    2024年02月22日
    浏览(41)
  • ubuntu22.04@laptop OpenCV Get Started: 011_edge_detection

    边缘检测是一种图像处理技术,用于识别图像中对象或区域的边界(边缘)。边缘是与图像相关联的最重要的特征之一。 像素强度的突然变化是边缘的特征,在相邻像素中找到这种变化,就找到了边缘,通过图像的边缘了解图像的基本结构。因此,计算机视觉处理应用中广泛

    2024年02月20日
    浏览(38)
  • ubuntu22.04@laptop OpenCV Get Started: 007_color_spaces

    在本章中,将了解计算机视觉中使用的流行颜色空间,并将其用于基于颜色的分割。 不同颜色空间定义 基于颜色图像分割 记得曾经有人谈到,什么是科学? 或者说对于我们来说科学的定义是什么? Science is a rigorous, systematic endeavor that builds and organizes knowledge in the form of testabl

    2024年02月20日
    浏览(35)
  • ubuntu22.04@laptop OpenCV Get Started: 006_annotating_images

    为图像和视频添加注释的目的不止一个,OpenCV使这个过程简单明了。 下来,一起看一如何使用它: 将信息添加到图像上 在对象检测的情况下,围绕对象绘制边界框 突出显示具有不同颜色的像素以进行图像分割 一旦学会了对图像进行注释,对视频帧的注释也是同样的道理。

    2024年02月20日
    浏览(36)
  • ubuntu22.04@laptop OpenCV Get Started: 012_mouse_and_trackbar

    鼠标指针和轨迹条是图形用户界面(GUI)中的关键组件。 如果没有这些关键交互组件,就无法真正考虑与GUI交互。 因此,结合演示代码了解OpenCV中鼠标和轨迹条的内置功能,对于程序交互来说至关重要。 012_mouse_and_trackbar是OpenCV通过鼠标指针和轨迹条与用户交互的示例。 C

    2024年02月20日
    浏览(39)
  • ubuntu22.04(opencv安装):python-dev、python-numpy、libdc1394-22-dev无法安装问题

    网上很多ubuntu安装opencv的教程在安装opencv依赖时出现无法定位的问题: 推荐使用以下命令安装依赖: sudo apt-get install python-dev-is-python3 python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-dev 仔细观察以下就发现哪里有区别了 建议以后出现这种问题多去googl

    2024年01月19日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包