更改可以在Linux上运行
时间: 2023-11-08 19:05:41 浏览: 45
好的,如果你想在 Linux 上运行这段代码,可以将其中的 `xvimagesink` 改为 `autovideosink`,因为 `xvimagesink` 是 X11 窗口系统下的一个视频输出插件,而在 Linux 上可能没有 X11 窗口系统。另外,如果你想要保存的图片格式不是 JPEG,可以将 `jpegenc` 改为其他的编码器,例如 `pngenc`。修改后的代码如下:
```c
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <time.h>
int take_picture(void) {
char filename[32];
sprintf(filename, "picture-%ld.png", time(NULL));
int fd = open(filename, O_WRONLY | O_CREAT, 0644);
if (fd < 0) {
fprintf(stderr, "Can not create file: %s\n", filename);
return -1;
}
system("gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! video/x-raw,format=NV12,width=720,height=576,framerate=15/1 ! pngenc ! filesink location=picture.png > /dev/null 2>&1");
char cmd[128];
sprintf(cmd, "cat picture.png >> %s", filename);
system(cmd);
printf("Picture saved to: %s\n", filename);
close(fd);
return 0;
}
int main(void) {
// 设置环境变量
setenv("DISPLAY", ":0.0", 1);
setenv("XDG_RUNTIME_DIR", "/run/user/1000", 1);
// 检查摄像头设备文件是否存在
if (access("/dev/video0", F_OK) == 0) {
// 启动 pipeline
system("gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! video/x-raw,format=NV12,width=720,height=576,framerate=15/1 ! autovideosink > /dev/null 2>&1 &");
} else {
fprintf(stderr, "Can not find camera!!!\n");
return 1;
}
printf("MIPI CSI Camera Preview started!\n");
// 循环等待用户输入,按下 'c' 键时拍照并保存
while (1) {
char c = getchar();
if (c == 'c') {
take_picture();
}
}
return 0;
}
```
在这个修改后的代码中,我们将图片的格式改为 PNG,并将视频输出插件改为 `autovideosink`。同时,我们将摄像头设备文件改为 `/dev/video0`,因为在 Linux 上通常摄像头设备的文件名是 `/dev/video0`。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)