树莓派摄像头Camera的使用
一、安装
1.硬件安装
2.打开Raspberry Pi配置工具开启Camera
二、 如何通过命令行控制摄像头模块
现在您的相机模块已连接且软件已启用,请尝试使用命令行工具
raspistill
和raspivid
。
1.单击任务栏中的黑色监视器图标打开终端窗口:
2.键入以下命令以拍摄静态图片并将其保存到桌面:
1 2 |
raspistill <span class="token operator">-</span>o Desktop<span class="token operator">/</span>image<span class="token punctuation">.</span>jpg |
raspistill命令进入终端
3.按Enter
运行命令。
当命令运行时,您可以在拍摄静止图像之前看到相机预览打开五秒钟。
4.在桌面上查找图片文件图标,然后双击文件图标以打开图片。
桌面上的图像
通过添加不同的选项,您可以设置
raspistill
命令所采用的图像的大小和外观。
- 例如,添加
-h
和-w
更改图像的高度和宽度:
1 2 |
raspistill <span class="token operator">-</span>o Desktop<span class="token operator">/</span>image<span class="token operator">-</span>small<span class="token punctuation">.</span>jpg <span class="token operator">-</span>w <span class="token number">640</span> <span class="token operator">-</span>h <span class="token number">480</span> |
- 现在使用以下
raspivid
命令使用Camera Module录制视频:
1 2 |
raspivid <span class="token operator">-</span>o Desktop<span class="token operator">/</span>video<span class="token punctuation">.</span>h264 |
- 要播放视频文件,请双击
video.h264
桌面上的文件图标以在VLC Media Player中将其打开。
三、如何使用Python代码控制相机模块
Python picamera
库允许您控制相机模块并创建出色的项目。
1.打开Python 3编辑器,例如Thonny Python IDE:
打开Thonny
2. 打开一个新文件并将其另存为camera.py
。
注意: 永远不要将文件保存为picamera.py
,这一点很重要。
3.输入以下代码:
1 2 3 4 5 6 7 8 9 |
<span class="token keyword">from</span> picamera <span class="token keyword">import</span> PiCamera <span class="token keyword">from</span> time <span class="token keyword">import</span> sleep camera <span class="token operator">=</span> PiCamera<span class="token punctuation">(</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>start_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> sleep<span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>stop_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> |
4.* 保存并运行您的程序。相机预览应显示五秒钟,然后再次关闭。
图像预览
注意:只有将显示器连接到Raspberry Pi时,相机预览才有效。如果您使用远程访问(例如SSH或VNC),则不会“看到相机预览”。
5.如果您的预览是颠倒的,可以使用以下代码将其旋转180度:
1 2 3 |
camera <span class="token operator">=</span> PiCamera<span class="token punctuation">(</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>rotation <span class="token operator">=</span> <span class="token number">180</span> |
您可以通过旋转图像
90
,180
或270
度。要重置图像,请设置rotation
为0
度。
最好使预览稍微透视,以便在预览打开时查看程序中是否出现错误。
6.通过设置alpha
级别使相机预览透视:
1 2 |
camera<span class="token punctuation">.</span>start_preview<span class="token punctuation">(</span>alpha<span class="token operator">=</span><span class="token number">200</span><span class="token punctuation">)</span> |
该
alpha
值可以是0
和255
之间的任何数字。
四、用Python代码拍摄静态图片
现在使用相机模块和Python拍摄一些静态照片。
1.修改您的代码以添加camera.capture()一行:
1 2 3 4 5 |
camera<span class="token punctuation">.</span>start_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> sleep<span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>capture<span class="token punctuation">(</span><span class="token string">'/home/pi/Desktop/image.jpg'</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>stop_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> |
注意:sleep在拍摄图像之前至少需要两秒钟,这一点非常重要,因为这样可以让相机的传感器有时间感应光线。
运行代码。
您应该看到相机预览打开五秒钟,然后应该拍摄静止图像。拍照时,您可以看到预览会短暂调整到不同的分辨率。
您的新图像应保存到桌面。
2.现在添加一个循环来连续拍摄五张照片:
1 2 3 4 5 6 |
camera<span class="token punctuation">.</span>start_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">for</span> i <span class="token keyword">in</span> <span class="token builtin">range</span><span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">:</span> sleep<span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>capture<span class="token punctuation">(</span><span class="token string">'/home/pi/Desktop/image%s.jpg'</span> <span class="token operator">%</span> i<span class="token punctuation">)</span> camera<span class="token punctuation">.</span>stop_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> |
变量i计算多少次循环运行后,从0到4。因此,图像将保存为image0.jpg,image1.jpg等等。
再次运行代码并将摄像头模块固定到位。
相机应该每五秒拍一张照片。拍摄完第五张照片后,预览将关闭。
查看桌面以查找五张新图片。
五、使用Python代码录制视频
现在录制视频
1.修改您的代码以删除capture()并改为添加start_recording()和stop_recording()
您的代码现在应该如下所示:
1 2 3 4 5 6 |
camera<span class="token punctuation">.</span>start_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>start_recording<span class="token punctuation">(</span><span class="token string">'/home/pi/Desktop/video.h264'</span><span class="token punctuation">)</span> sleep<span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>stop_recording<span class="token punctuation">(</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>stop_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> |
运行代码。
您的Raspberry Pi应该打开预览,录制5秒的视频,然后关闭预览。
六、如何更改图像设置和添加图像效果
Python
picamera
软件提供了许多效果和配置来改变图像的外观。
注意:某些设置仅影响预览而不影响捕获的图像,某些设置仅影响捕获的图像,而其他许多设置仅影响两者。
1.设置图像分辨率
您可以更改
resolution
相机模块拍摄的图像。
默认情况下,图像分辨率设置为显示器的分辨率。静态照片的最大分辨率为2592×1944,视频录制的最大分辨率为1920×1080。
- 使用以下代码将
resolution
最大值设置为拍照。
注意:您还需要将帧速率设置
15
为启用此最大分辨率。
1 2 3 4 5 6 7 |
camera<span class="token punctuation">.</span>resolution <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token number">2592</span><span class="token punctuation">,</span> <span class="token number">1944</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>framerate <span class="token operator">=</span> <span class="token number">15</span> camera<span class="token punctuation">.</span>start_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> sleep<span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>capture<span class="token punctuation">(</span><span class="token string">'/home/pi/Desktop/max.jpg'</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>stop_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> |
最低分辨率为64×64。
2.在图片中添加文字
您可以使用该命令向图像添加文本
annotate_text
。
- 运行此代码尝试:
1 2 3 4 5 6 |
camera<span class="token punctuation">.</span>start_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>annotate_text <span class="token operator">=</span> <span class="token string">"Hello world!"</span> sleep<span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>capture<span class="token punctuation">(</span><span class="token string">'/home/pi/Desktop/text.jpg'</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>stop_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> |
3.更改添加文本的外观
- 使用以下代码设置文本大小:
1 2 |
camera<span class="token punctuation">.</span>annotate_text_size <span class="token operator">=</span> <span class="token number">50</span> |
您可以将文本大小设置为之间的任何东西
6
来160
。默认大小是32
。
也可以更改文本颜色。
- 首先,添加
Color
到import
程序顶部的行:
1 2 |
<span class="token keyword">from</span> picamera <span class="token keyword">import</span> PiCamera<span class="token punctuation">,</span> Color |
- 然后
import
在行下面修改你的其余代码,使它看起来像这样:
1 2 3 4 5 6 7 |
camera<span class="token punctuation">.</span>start_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>annotate_background <span class="token operator">=</span> Color<span class="token punctuation">(</span><span class="token string">'blue'</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>annotate_foreground <span class="token operator">=</span> Color<span class="token punctuation">(</span><span class="token string">'yellow'</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>annotate_text <span class="token operator">=</span> <span class="token string">" Hello world "</span> sleep<span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>stop_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> |
4.更改预览的亮度
您可以更改预览显示的亮度。默认亮度为
50
,您可以将其设置为0
和之间的任何值100
。
- 运行以下代码试试这个:
1 2 3 4 5 6 |
camera<span class="token punctuation">.</span>start_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>brightness <span class="token operator">=</span> <span class="token number">70</span> sleep<span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>capture<span class="token punctuation">(</span><span class="token string">'/home/pi/Desktop/bright.jpg'</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>stop_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> |
- 以下循环调整亮度并添加文本以显示当前亮度级别:
1 2 3 4 5 6 7 |
camera<span class="token punctuation">.</span>start_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">for</span> i <span class="token keyword">in</span> <span class="token builtin">range</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">)</span><span class="token punctuation">:</span> camera<span class="token punctuation">.</span>annotate_text <span class="token operator">=</span> <span class="token string">"Brightness: %s"</span> <span class="token operator">%</span> i camera<span class="token punctuation">.</span>brightness <span class="token operator">=</span> i sleep<span class="token punctuation">(</span><span class="token number">0.1</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>stop_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> |
5.更改预览的对比度
与预览亮度类似,您可以更改预览的对比度。
- 运行以下代码试试这个:
1 2 3 4 5 6 7 |
camera<span class="token punctuation">.</span>start_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">for</span> i <span class="token keyword">in</span> <span class="token builtin">range</span><span class="token punctuation">(</span><span class="token number">100</span><span class="token punctuation">)</span><span class="token punctuation">:</span> camera<span class="token punctuation">.</span>annotate_text <span class="token operator">=</span> <span class="token string">"Contrast: %s"</span> <span class="token operator">%</span> i camera<span class="token punctuation">.</span>contrast <span class="token operator">=</span> i sleep<span class="token punctuation">(</span><span class="token number">0.1</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>stop_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> |
6.添加炫酷的图像效果
您可以使用它
camera.image_effect
来应用特定的图像效果。
图像效果选项包括:
none
negative
solarize
sketch
denoise
emboss
oilpaint
hatch
gpen
pastel
watercolor
film
blur
saturation
colorswap
washedout
posterise
colorpoint
colorbalance
cartoon
deinterlace1
deinterlace2
默认效果是
none
。
- 选择图像效果并尝试一下:
1 2 3 4 5 6 |
camera<span class="token punctuation">.</span>start_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>image_effect <span class="token operator">=</span> <span class="token string">'colorswap'</span> sleep<span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>capture<span class="token punctuation">(</span><span class="token string">'/home/pi/Desktop/colorswap.jpg'</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>stop_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> |
- 运行此代码以循环所有图像效果
camera.IMAGE_EFFECTS
:
1 2 3 4 5 6 7 |
camera<span class="token punctuation">.</span>start_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">for</span> effect <span class="token keyword">in</span> camera<span class="token punctuation">.</span>IMAGE_EFFECTS<span class="token punctuation">:</span> camera<span class="token punctuation">.</span>image_effect <span class="token operator">=</span> effect camera<span class="token punctuation">.</span>annotate_text <span class="token operator">=</span> <span class="token string">"Effect: %s"</span> <span class="token operator">%</span> effect sleep<span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>stop_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> |
效果
设置图像曝光模式
您可以使用camera.exposure_mode
将曝光设置为特定模式。
曝光模式选项包括:
off
auto
night
nightpreview
backlight
spotlight
sports
snow
beach
verylong
fixedfps
antishake
fireworks
默认模式是auto
。
- 选择曝光模式并试用:
123456camera<span class="token punctuation">.</span>start_preview<span class="token punctuation">(</span><span class="token punctuation">)</span>camera<span class="token punctuation">.</span>exposure_mode <span class="token operator">=</span> <span class="token string">'beach'</span>sleep<span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span>camera<span class="token punctuation">.</span>capture<span class="token punctuation">(</span><span class="token string">'/home/pi/Desktop/beach.jpg'</span><span class="token punctuation">)</span>camera<span class="token punctuation">.</span>stop_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> - 您可以
camera.EXPOSURE_MODES
像使用图像效果一样遍历所有曝光模式。
7.更改图像白平衡
您可以使用
camera.awb_mode
将自动白平衡设置为预设模式。
可用的自动白平衡模式为:
off
auto
sunlight
cloudy
shade
tungsten
fluorescent
incandescent
flash
horizon
默认是
auto
。
- 选择自动白平衡模式并尝试:
1 2 3 4 5 6 |
camera<span class="token punctuation">.</span>start_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>awb_mode <span class="token operator">=</span> <span class="token string">'sunlight'</span> sleep<span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>capture<span class="token punctuation">(</span><span class="token string">'/home/pi/Desktop/sunlight.jpg'</span><span class="token punctuation">)</span> camera<span class="token punctuation">.</span>stop_preview<span class="token punctuation">(</span><span class="token punctuation">)</span> |
- 您可以
camera.AWB_MODES
像使用图像效果一样循环所有自动白平衡模式。
转载请注明:徐自远的乱七八糟小站 » 树莓派摄像头Camera的使用