荔枝派Zero(全志V3S)基于QT实现在LCD显示图片

这篇具有很好参考价值的文章主要介绍了荔枝派Zero(全志V3S)基于QT实现在LCD显示图片。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

有这样一个需求,通过配置 QT,在 linux 下实现显示我所想要显示的图片,实现的方式是我可以在命令行将图片的路径作为入参传入进去,从而对其进行显示,在之前的文章中已实现了在板子上运行 QT5 程序,此需求要自己写个 QT 程序,且需要对 buildroot 进行裁剪支持一些常用的图片格式即可。


一、配置 buildroot 及编译

make menuconfig

1、Target packages -> Graphic libraries and applications (graphic/text) -> Qt5 ,勾选上 gui module、widgets module、GIF support、JPEG support、PNG support
荔枝派Zero(全志V3S)基于QT实现在LCD显示图片
2、保存配置并退出
荔枝派Zero(全志V3S)基于QT实现在LCD显示图片
3、编译 buildroot
回到 buildroot-2017.08 的根目录下,执行 make,等待编译结束

二、写 QT 代码

荔枝派Zero(全志V3S)基于QT实现在LCD显示图片
main.cpp

#include "widget.h"

#include <QApplication>
#include <QString>
#include <QDebug>

QString image_path;

int main(int argc, char *argv[])
{
    if (argc < 2) {
        qDebug() << "pelase input image path\n";

        return -1;
    }
    image_path = argv[1];
    qDebug() << "image_path = " << image_path << "\n";

    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QLabel>
#include <QMovie>
#include <QImage>
#include <QPainter>

extern QString image_path;

void Widget::paintEvent(QPaintEvent *e)
{
    QPainter painter(this);
    QPixmap pix;
    pix.load(image_path);
    painter.drawPixmap(0, 0, 800, 480, pix);
}

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    resize(800, 480); // 设置窗口大小
}

Widget::~Widget()
{
    delete ui;
}

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

    void paintEvent(QPaintEvent *);

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

ImageShow.pro

QT += widgets

HEADERS       = widget.h
FORMS         = widget.ui
SOURCES       = main.cpp \
                widget.cpp

# install
target.path = $$[QT_INSTALL_EXAMPLES]/widgets/widgets/ImageShow
INSTALLS += target

widget.ui 界面没有放置控件,因此这里不罗列出来了

三、编译可执行文件

1、在 ~/licheepi_zero/buildroot-2017.08/output/build/qt5base-5.6.2/examples/widgets/widgets/ 目录下新建一个名为 ImageShow 的文件夹,将上述文件放置进去,并赋予权限

mkdir ImageShow
sudo chmod 777 ImageShow/ -R
cd ImageShow
ls

荔枝派Zero(全志V3S)基于QT实现在LCD显示图片
荔枝派Zero(全志V3S)基于QT实现在LCD显示图片
荔枝派Zero(全志V3S)基于QT实现在LCD显示图片
2、qmake 生成 Makefile

/home/Gnep/licheepi_zero/buildroot-2017.08/output/build/qt5base-5.6.2/bin/qmake ImageShow.pro

荔枝派Zero(全志V3S)基于QT实现在LCD显示图片
3、make 生成可执行文件

make

荔枝派Zero(全志V3S)基于QT实现在LCD显示图片

四、拷贝到 SD 卡

1、把 buildroot-2017.08 产生的 rootfs.tar 解压到刚创建的rootfs分区根目录
在 buildroot-2017.08 根目录下

find ./ -name rootfs.tar
sudo tar xf ./output/images/rootfs.tar -C /media/Gnep/rootfs/

荔枝派Zero(全志V3S)基于QT实现在LCD显示图片
2、将上述编译好的可执行文件也拷贝到 SD 卡的 rootfs 分区

sudo cp ImageShow /media/Gnep/rootfs/

荔枝派Zero(全志V3S)基于QT实现在LCD显示图片
3、此外也找两张图片拷贝到 SD 卡的 rootfs 分区,一张为 google.png,另一张为 Spongebob.jpg

五、上板子测试

1、到根目录下 ls 查看一下我们需要用到的文件

cd /
ls

荔枝派Zero(全志V3S)基于QT实现在LCD显示图片
2、运行 ImageShow 并指定图片路径,查看 LCD 屏幕
①、显示 google.png

./ImageShow google.png   -platform linuxfb

荔枝派Zero(全志V3S)基于QT实现在LCD显示图片
荔枝派Zero(全志V3S)基于QT实现在LCD显示图片

②、显示 Spongebob.jpg

./ImageShow Spongebob.jpg  -platform linuxfb

荔枝派Zero(全志V3S)基于QT实现在LCD显示图片
荔枝派Zero(全志V3S)基于QT实现在LCD显示图片

问题记录
第一次在板子上测试的时候屏幕为白屏,图片显示不出来,后来将 buildroot 先执行了 make distclen 再重新编译了 buildroot 后再次上板子测试才解决了问题

六、资源自取

方式1:github链接
https://github.com/Gnepuil79/licheepi.git

方式2:百度网盘
链接:https://pan.baidu.com/s/1vo-tTXZw4ePBgL0yeqvfEg
提取码:2wlt


我的qq:2442391036,欢迎交流!文章来源地址https://www.toymoban.com/news/detail-429121.html

到了这里,关于荔枝派Zero(全志V3S)基于QT实现在LCD显示图片的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 荔枝派Zero(全志V3S) tftp下载 kernel 和 nfs 挂载文件系统

    传输文件每次都插拔 SD 卡太麻烦了,还是使用网线传输文件比较快,借此机会讲述一下 通过 tftp下载 kernel 和 nfs 挂载文件系统 我使用的 uboot 是 2017.01 版本的,U-Boot 2017 已经支持了 sun8i-emac 的驱动,只需要在编译时选上并且修改 dts 就行。 ①、进入u-boot源码目录,执行 ②、

    2024年02月08日
    浏览(39)
  • 荔枝派Zero(全志V3S)烧录Uboot、Kernel及rootfs到SD卡并运行在板子上

    通过前面 Uboot编译及配置 我们获得了 u-boot-sunxi-with-spl.bin 通过前面 Kernel编译 我们获得了zImage镜像文件及sun8i-v3s-licheepi-zero-dock.dtb设备树文件 通过前面 rootfs编译我们获得了 rootfs.tar 文件系统 那么下面就将相关文件烧录到 SD 卡并运行在板子上看下效果 1、插上SD卡 2、查看分区

    2024年02月08日
    浏览(68)
  • 全志V3S嵌入式驱动开发(准备)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         要学好嵌入式,其实最好自己可以画板子、调试板子、写软件、调试软件这样来学习。简单的51单片机、stm32这样的mcu或许画起来不是很复杂,但是如果是运行linux系统的soc芯片,那么

    2024年02月12日
    浏览(42)
  • 【全志V3s】SPI NAND Flash 驱动开发

    芯片:W25N01GVZEIG datasheet上的描述: SLC工艺 2KB*65536页 10万次擦写次数 焊好以后用CH341A读了一下 上面这张图描述了soc启动的四个顺序,分别是usb启动、sd卡启动、spi norflash启动、spi nandflash启动四种方式。前面的测试中一直走的是sd卡启动,但是从成本和稳定性上说,spi nandfla

    2024年02月07日
    浏览(47)
  • 全志V3S嵌入式驱动开发(看原理图)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         对于嵌入式软件开发的同学来说,你可能不一定要会自己画原理图、做pcb板。但是,别人已经设计好的原理图,自己还是要看得懂、读的明白的。此外,原理图无非就是各种符号放在

    2024年02月06日
    浏览(48)
  • 全志V3S嵌入式驱动开发(wifi驱动)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         荔枝派上面除了支持v3s自带的有线网口,还带有一个支持sd协议的esp 8089 wifi模块。有了这个模块,v3s没有网线,也可以用它和外界联系了。但是,我们实际测试下来,效果并不算很理

    2024年02月10日
    浏览(46)
  • 全志V3S嵌入式驱动开发(驱动开发准备)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         之前的文章都是教大家怎么搭建环境、看原理图、编译内核和根文件系统、做镜像,直到现在才进入驱动开发的主题。 毕竟整个专栏的目的,还是希望大家能够学会驱动外部硬件。

    2024年02月13日
    浏览(64)
  • 全志V3S嵌入式驱动开发(u盘写读)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         对于现在的soc来说,基本上usb是标配的。它一般需要支持usb host、device和otg三种模式。 简单解释下,host模式,就是v3s把自己当成了主机,其他设备都是从设备;device模式,相当于别人

    2024年02月09日
    浏览(58)
  • 全志V3S嵌入式驱动开发(开发环境再升级)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         前面我们陆陆续续开发了差不多有10个驱动,涉及到网口、串口、音频和视频等几个方面。但是整个开发的效率还是比较低的。每次开发调试的时候都很麻烦,譬如说,如果是驱动代码

    2024年02月08日
    浏览(56)
  • 全志V3S嵌入式驱动开发(触摸屏驱动)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         所谓的触摸屏,其实就是在普通的lcd屏幕之上,再加一层屏而已。这个屏是透明的,这样客户就可以看到下面lcd屏幕的内容,另外一方面,通过触摸信号,还可以实现人和机器的自然

    2024年02月08日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包