树莓派开发笔记(九):基于CSI口的摄像头拍照程序(同样适用USB摄像头)
若该文为原创文章,未经允许不得转载
原博主博客地址:https://blog.csdn.net/qq21497936
原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/79790642
各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究
红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中...(点击传送门)
树莓派开发专栏(点击传送门)
上一篇:《树莓派开发笔记(八):GPIO口的I2C使用(BME280三合一传感器:测量温度、湿度、气压、海拔高度) 》
下一篇:《树莓派开发笔记(十):Qt读取ADC模拟量电压(ADS1115读取电压模拟量)》
前话
前面开发完GPIO口的功能,还剩下2个接口,一个是摄像头,一个是显示屏。本篇我们开发一个基于CSI接口的摄像头拍照程序。
Demo:摄像头CSI的拍照程序
树莓派摄像头
笔者买的不是USB网络摄像头,而是通过扩展排线插入摄像头,摄像头参数和结构如下:
接线图
启用摄像头
sudo raspi-config
然后重启树莓派。
使用raspistill命令行操作摄像头
raspistill在指定的时间运行摄像头,而且如果需要可以捕获JPG图片。
命令格式:raspistill [options]
图像参数与命令
-?, --help : 帮助文档
-w, --width : 设置图像宽度 <尺寸>
-h, --height : 设置图像高度 <尺寸>
-q, --quality : 设置jpeg品质 <0到100>
-r, --raw : 增加raw原始拜尔数据到JPEG元数据
-o, --output : 输出文件名 <文件名>,如果要写到stdout,使用`-o -`,如果不特别指定,图像文件不会被保存
-l, --latest : 链接最近的完整图像到指定文件 <文件名>
-v, --verbose : 在运行摄像头时输出详细信息
-t, --timeout : 拍照和关闭时的延时指定,未指定时默认是5s
-th, --thumb : 设置预览图(小图)参数(包括X、Y、品质)或者不设置
-d, --demo : 运行一个demo模式(cycle through range of camera options, no capture),括号里的我可以理解成循环测试模式吗?
-e, --encoding : 编码来输出指定格式文件 (jpg, bmp, gif, png)
-x, --exif :将可交换图像文件应用到捕获中(格式:`key=value`)或者不设置
-tl, --timelapse : 间隔拍摄,每<ms>拍摄一张图片
-fp, --fullpreview : 用静态捕捉分辨率运行预览(可能会减小预览帧率)
-k, --keypress : 按键触发,按`ENTER`键拍照,按`X`然后`ENTER`键退出
-s, -signal : 信号触发,等待另一个进程信号来拍摄一张照片
-g, -gl : 绘制预览到文本,而不是使用视频渲染组件(啥意思?)
-gc, --glcapture : 捕获GL帧buffer而不是摄像机图像
-set, --settings : 检索摄像机设置值然后写出到stdout
-cs, --camselect : 选择摄像头设备 <数字>,默认0
-bm, --burst : 运行burst capture mode
预览参数与命令
-p, --preview : 预览窗口大小设置 <x,y,w,h>
-f, --fullscreen : 全屏幕预览模式
-op, --opacity : 预览窗口透明度 (0-255)
-n, --nopreview : 不显示预览窗口
图像参数与命令2
-sh, --sharpness : 设置图像锐度 (-100 到 100)
-co, --contrast : 设置图像对比度 (-100 到 100)
-br, --brightness : 设置图像亮度 (0 到 100)
-sa, --saturation : 设置图像饱和度 (-100 到 100)
-ISO, --ISO : 设置摄像头感光度
-vs, --vstab : Turn on video stabilisation 开启摄像头防抖模式(是这个意思吗?)
-ev, --ev : 设置EV补偿
-ex, --exposure : 设置曝光模式(参见提示)
-awb, --awb : 设置AWB模式(参见提示)
-ifx, --imxfx : 设置图像效应(参见提示)
-cfx, --colfx : 设置色彩效应(参见提示)
-mm, --metering : 设置测光模式(参见提示)
-rot, --rotation : 设置图像旋转 (0到359)
-hf, --hflip : 设置水平翻转 horizontal flip
-vf, --vflip : 设置垂直翻转 vertical flip
-roi, --roi : 设置interest区域 (啥叫interset?)
--ss, --shutter : 设置快门速度,微秒
--awbg, --awbgains : 设置AWB阈值, AWB模式必须关闭
--drc, --drc : 设置DRC水平
提示
曝光模式选项:
auto - 自动曝光模式
night - 夜间拍摄模式
nightpreview - 夜间预览拍摄模式
backlight - 逆光拍摄模式
spotlight - 聚光灯拍摄模式
sports - 运动拍摄模式
snow - 雪景拍摄模式
beach - 海滩拍摄模式
verylong - 长时间曝光拍摄模式
fixedfps - 帧约束拍摄模式
antishake - 防抖模式
fireworks - 烟火拍摄模式
自动白平衡选项:
off - 关闭白平衡测算
auto - 自动模式(默认)
sun - 日光模式
cloud - 多云模式
shade - 阴影模式
tungsten - 钨灯模式
fluorescent - 荧光灯模式
incandescent - 白炽灯模式
flash - 闪光模式
horizon - 地平线模式
图像特效选项:
none - 无特效(默认)
negative - 反色图像
solarise - 曝光过度图像
posterize - 色调图像
whiteboard - 白板特效
blackboard - 黑板特效
sketch - 素描风格特效
denoise - 降噪图像
emboss - 浮雕图像
oilpaint - 油画风格特效
hatch - 草图特效
gpen - 马克笔特效
pastel - 柔化风格特效
watercolour - 水彩风格特效
film - 胶片颗粒风格特效
blur - 模糊图像
saturation - 色彩饱和图像
colourswap - 暂未可用
washedout - 暂未可用
posterise - 暂未可用
colourpoint - 暂未可用
colourbalance - 暂未可用
cartoon - 暂未可用
测光模式选项:
average - 全画面平衡测光
spot - 点测光
backlit - 模拟背光图像
matrix - 阵列测光
预览参数与命令2
-gs, -glscene : GL屏幕尺寸等参数
-gw, -glwin : GL窗口参数
命令1:两秒钟(时间单位为毫秒)延迟后拍摄一张照片,并保存为 image.jpg
raspistill -t 2000 -o image.jpg
命令2:拍摄一张自定义大小的照片。
raspistill -o image.jpg -w 640 -h 480
命令3:降低图像质量,减小文件尺寸。
raspistill -o image.jpg -q 5
命令4:强制使预览窗口出现在坐标为 100,100 的位置,并且尺寸为宽300和高200像素。(注意:实测未出现预览窗口)
raspistill -o image.jpg -p 100,100,300,200
命令5:禁用预览窗口。
raspistill -o image.jpg -n
命令6:将图像保存为 PNG 文件(无损压缩格式,但是要比 JPEG 速度慢)。注意,当选择图像编码时,文件扩展名将被忽略。
raspistill -o image.png -e png
命令7:向 JPEG 文件中添加一些 EXIF 信息。该命令将会把作者名称标签设置为Dreamcolor,GPS海拔高度为123.5米。
raspistill -o image.jpg -x IFD0.Artist=Dreamcolor -x GPS.GPSAltitude=1235/10
命令8:设置浮雕风格图像特效。
raspistill -o image.jpg -ifx emboss
命令9:设置 YUV 图像的 U 和 V 通道为指定的值(128:128 为黑白图像)
raspistill -o image.jpg -cfx 128:128
命令10:仅显示两秒钟预览图像,而不对图像进行保存。
raspistill -t 2000
命令11:间隔获取图片,在 10 分钟(10 分钟 = 600000 毫秒)的时间里,每 10 秒获取一张,并且命名为 image_number_1_today.jpg,image_number_2_today.jpg... 的形式。
raspistill -t 600000 -tl 10000 -o image_num_%d_today.jpg
命令12:获取一张照片并发送至标准输出设备
raspistill -t 2000 -o -
命令13:获取一张照片并保存为一个文件
raspistill -t 2000 -o - > my_file.jpg
关键代码
初始化
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);ui->label_photo->setGeometry(0,0,400,400);connect(&_photo, SIGNAL(takeAPhotoReply(QPixmap)), this, SLOT(takeAPhonoReply(QPixmap)));}
拍照功能
void MainWindow::on_pushButton_phono_clicked()
{_photo.takeAPhoto();
}
模块代码
Photo.h
#ifndef PHOTO_H
#define PHOTO_H
#include <QObject>
#include <QPixmap>
class Photo : public QObject
{Q_OBJECT
public:explicit Photo(QObject *parent = 0);void setTempFilePath(QString path = QString());void clearArgs();signals:void takeAPhotoReply(QPixmap pixmap);
public slots:QPixmap takeAPhoto(int time = 0, int width = 1920, int height = 1080);
private:void doCmd();
private:QString _cmd;QStringList _args;QString _path;int _width;int _height;int _time;
};
Photo.cpp
#include "photo.h"
#include <QDebug>
#include <QProcess>
#include <QPixmap>
#include <QApplication>
Photo::Photo(QObject *parent): QObject(parent)
{_cmd = "raspistill -n ";
}void Photo::setTempFilePath(QString path)
{_path = path;
}void Photo::clearArgs()
{_args.clear();
}QPixmap Photo::takeAPhoto(int time, int width, int height)
{…doCmd();…emit takeAPhotoReply(pixmap);return pixmap;
}void Photo::doCmd()
{…QProcess p;p.execute(cmd);…
}
运行效果
上一篇:《树莓派开发笔记(八):GPIO口的I2C使用(BME280三合一传感器:测量温度、湿度、气压、海拔高度) 》
下一篇:《树莓派开发笔记(十):Qt读取ADC模拟量电压(ADS1115读取电压模拟量)》
原博主博客地址:https://blog.csdn.net/qq21497936
原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/79790642
树莓派开发笔记(九):基于CSI口的摄像头拍照程序(同样适用USB摄像头)相关推荐
- 树莓派android摄像头驱动开发,树莓派开发笔记(九):基于CSI口的摄像头拍照程序(同样适用USB摄像头)...
前话 前面开发完GPIO口的功能,还剩下2个接口,一个是摄像头,一个是显示屏.本篇我们开发一个基于CSI接口的摄像头拍照程序. Demo:摄像头CSI的拍照程序 树莓派摄像头 笔者买的不是USB网络摄 ...
- 树莓派开发笔记(五):GPIO引脚介绍和GPIO的输入输出使用(驱动LED灯、检测按键)
若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/ ...
- 树莓派开发笔记(十四):入手研华ADVANTECH工控树莓派UNO-220套件(三):使用研发自带系统测试rtc、gpio、232和485套件接口
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/124754769 红胖子(红模仿)的博文大全:开发技术集 ...
- 树莓派开发笔记(十七):树莓派4B+上Qt多用户连接操作Mysql数据库同步(单条数据悲观锁)
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/125188715 红胖子(红模仿)的博文大全:开发技术集 ...
- 树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/110940484 长期持续带来更多项目与技术分 ...
- 《树莓派开发笔记 - 第1部分 基础篇》第6章 树莓派摄像头操作
6.1树莓派基本操作 目前提供了三个应用程序,分别为:raspistill.raspivid.raspistillyuv.其中 raspistill 和 raspistillyuv 非常相似,并且都是 ...
- 《树莓派开发笔记 - 第1部分 基础篇》第7章 树莓派变身路由器
[注]笔者的树莓派是3B. 7.1 OpenWrt系统的安装 树莓派开发板没有配置板载FLASH,因为它支持SD卡启动,所有我们需要下载相应镜像,并将其烧写在SD上,启动系统即可(这个镜像里包含了我们 ...
- php调用linux摄像头,Linux_Linux中开发USB摄像头驱动详解,USB摄像头以其良好的性能和低 - phpStudy...
Linux中开发USB摄像头驱动详解 USB摄像头以其良好的性能和低廉的价格得到广泛应用.同时因其灵活.方便的特性,易于集成到嵌入式系统中.但是如果使用现有的符合Video for Linux标准的驱 ...
- 树莓派开发笔记(二)搭建智能家居系统(1) — Home Bridge + Home Assistant
搭建智能家居系统 搭建智能家居系统(1) 介绍 软件安装 简便安装 Home Assistant Home Bridge Home Bridge - Home Assistant 相关配置 HASS ...
最新文章
- makefile 中 =, :=, ?=, +=的区别
- Conda 为什么越来越慢?
- java redis 存session_JavaWeb: Redis存储Session方案
- java 32位_Java知识点:创建节约内存的JavaBean
- 被360整的体无完肤,我真的怒了!
- P01:01背包问题(转)
- 一年总结:2016.7.9 - 2017.7.9
- CodeMirror自动提醒配置
- NPAPI:JS的Number,在接口中可能是int32,也可能是double
- 深度WindowsXp错误的打了SP3补丁之后,无法进入系统
- LeetCode995.Minimum Number of K Consecutive Bit Flips(K 连续位的最小翻转次数 )
- ubuntu显示隐藏文件
- 系统分区减小_每日一练,防排烟系统,6.1
- shader拖尾_拖尾效果 - LouisSong - 博客园
- 电容的字母型规格型号标号材料容差总结
- redis—redis概述
- 医美“四大发明”?一次令人上头的认知碰撞
- 用Java实现递归与分治系列(二)
- Windows下安装Java以及开发环境配置
- 项目管理文档_免费直播 | 用项目管理“武装”质量管理体系
热门文章
- hackme pwn onepunch
- DAVE4 No source available for “xx() at 0xxxxx“
- hdu4114.Disney's FastPass
- 永别了,内涵段子APP及公众号被永久关停!!!!
- HTML5吃豆豆游戏开发实战(二)主角移动和动画循环设置
- 2022.6.2 质数(素数)与合数
- 【docker lnmp】 2、容器mysql 连接问题 getaddrinfo failed
- 【华为机试真题详解】不含 101 的数【2022 Q4 | 100分】
- PLC_SCL数据查找算法
- 训练YOLO v4模型时,xml格式转txt格式