Zynq-7000学习笔记(十五)——在QT上调用opencv加载图片并显示

 Zynq-7000学习笔记(十五)——在QT上调用opencv加载图片并显示

PC平台:WINDOWS 10 64位 + 虚拟机Ubuntu 14.04

Xilinx设计开发套件:Xilinx_vivado_sdk_2015.4

开发板:ZedBoard

USB摄像头:罗技 C270(720P)

Linux源码:2016_R1

Linaro文件系统:linaro-vivid-developer-20150618-705.tar.gz

QT库:qt-everywhere-opensource-src-4.7.3.tar.gz

openCV: opencv-3.1.0

一、修改qmake.conf,把opencv库的路径添加进去
#
# qmake configuration for building with arm-none-linux-gnueabi-g++
#

include(../../common/g++.conf)
include(../../common/linux.conf)
include(../../common/qws.conf)

###############################################################################################
QMAKE_LIBS += -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video \
-lopencv_features2d -lopencv_calib3d -lopencv_objdetect \
-lopencv_flann -lopencv_imgcodecs

INCLUDEPATH += /home/luotong/working/opencvlib/include
LIBS += /home/luotong/working/opencvlib/lib/libopencv_core.so \
/home/luotong/working/opencvlib/lib/libopencv_imgproc.so \
/home/luotong/working/opencvlib/lib/libopencv_highgui.so \
/home/luotong/working/opencvlib/lib/libopencv_ml.so \
/home/luotong/working/opencvlib/lib/libopencv_video.so \
/home/luotong/working/opencvlib/lib/libopencv_features2d.so \
/home/luotong/working/opencvlib/lib/libopencv_calib3d.so \
/home/luotong/working/opencvlib/lib/libopencv_objdetect.so \
/home/luotong/working/opencvlib/lib/libopencv_flann.so \
/home/luotong/working/opencvlib/lib/libopencv_imgcodecs.so
###############################################################################################

# modifications to g++.conf
QMAKE_CC = ${CROSS_COMPILE}gcc
QMAKE_CXX = ${CROSS_COMPILE}g++
QMAKE_LINK = ${CROSS_COMPILE}g++
QMAKE_LINK_SHLIB = ${CROSS_COMPILE}g++

# modifications to linux.conf
QMAKE_AR = ${CROSS_COMPILE}ar cqs
QMAKE_OBJCOPY = ${CROSS_COMPILE}objcopy
QMAKE_STRIP = ${CROSS_COMPILE}strip

QMAKE_CFLAGS="${CROSS_COMPILE_CFLAGS} -I$(ZYNQ_QT_INSTALL)/include -DZYNQ"
QMAKE_CXXFLAGS="${CROSS_COMPILE_CPPFLAGS} -I$(ZYNQ_QT_INSTALL)/include -DZYNQ"
QMAKE_LFLAGS="-L$(ZYNQ_QT_INSTALL)/lib -L/home/luotong/working/opencvlib/lib"

load(qt_config)

二、用QT creator创建一个项目,在界面上添加一个button和textlabel

 Zynq-7000学习笔记(十五)——在QT上调用opencv加载图片并显示

mainwindow.cpp
void MainWindow::on_pushButton_clicked()
{
image = cv::imread("/home/luotong/working/test.jpg");

Mat rgb;
QImage img;
if(image.channels()==3)
{
//cvt Mat BGR 2 QImage RGB
cvtColor(image,rgb,CV_BGR2RGB);
img =QImage((const unsigned char*)(rgb.data),
rgb.cols,rgb.rows,
rgb.cols*rgb.channels(),
QImage::Format_RGB888);
}
else
{
img =QImage((const unsigned char*)(image.data),
image.cols,image.rows,
image.cols*image.channels(),
QImage::Format_RGB888);
}

ui->label->setPixmap(QPixmap::fromImage(img));
ui->label->resize(ui->label->pixmap()->size());
}

mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include

#include
#include
#include

using namespace cv;

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();

private slots:
void on_pushButton_clicked();

private:
Ui::MainWindow *ui;

cv::Mat image;
};

#endif // MAINWINDOW_H

三、编译,运行
# /home/luotong/working/qt_install/bin/qmake -project

# qmake -spec /home/luotong/working/qt_install/mkspecs/qws/linux-arm-gnueabi-g++

# make

 Zynq-7000学习笔记(十五)——在QT上调用opencv加载图片并显示

点击button

 Zynq-7000学习笔记(十五)——在QT上调用opencv加载图片并显示

用户喜欢...

使用随时可用的硬件和软件开始机器学习

对于开发人员来说,机器学习(ML)硬件和软件的进步有望将这些复杂的方法带入物联网(IoT)边缘设备。然而,随着这一研究领域的发展,开发人员可以轻松地发现自己沉浸在这些技术背后的...


使用FPGA通过机器学习构建高性能嵌入式视觉应用

本文将介绍ML处理的要求以及FPGA解决许多性能问题的原因。然后,它将介绍一个合适的基于FPGA的ML平台以及如何使用它。...


使用 FPGA 构建具有机器学习能力的高性能嵌入式视觉应用

随着摄像头和其他设备产生的数据在快速增长,促使人们运用机器学习从汽车、安防和其他应用产生的影像中提取更多有用的信息。专用器件有望在嵌入式视觉应用中实现高性能机器学习 (ML...


在机器学习的应用上,软件工程师和FPGA真的有着难以逾越的鸿沟吗?

人工智能和机器学习正在渗透所有的行业。随着人工智能算法的成熟,支持这些算法的硬件平台也日趋成熟。目前,这些硬件平台包括 ASIC,CPU,GPU以及 FPGA 。在 Plunify,尽管我们的强项是F...


成为一名机器学习算法工程师,需要具备哪些技能?

成为一名合格的开发工程师不是一件简单的事情,需要掌握从开发到调试到优化等一系列能力,这些能力中的每一项掌握起来都需要足够的努力和经验。而要成为一名合格的机器学习算法工程...


Zynq学习笔记——HLS FAST corner导出keypoints(二)

PC平台:WINDOWS 10 64位 Xilinx设计开发套件:Xilinx_vivado_sdk_2015.4 开发板:ZedBoard 摄像头:OV5640 上一步导出HLS IP后,修改原来的硬件工程,其实升级一下hls_fast_corner IP就可以了,我这次用的不是...


STM32之TFT-LCD液晶学习

TFT-LCD即薄膜晶体管液晶显示器。其英文全称为:Thin Film Transistor-Liquid Crystal Display。TFT-LCD与无源TN-LCD、STN-LCD的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT)...


Zynq学习笔记——HLS FAST corner导出keypoints(一)

PC平台:WINDOWS 10 64位 Xilinx设计开发套件:Xilinx_vivado_sdk_2015.4 开发板:ZedBoard 之前参照XAPP1167文档,使用HLS Video函数库里的FASTX跑了一下例子,当时的例子是直接把keypoint以mask方式画在了原始视...


Zynq学习笔记——一个简单的HDMI显示例子

本文介绍一个简单的HDMI显示例子: 硬件工程 效果 源码链接: 密码:kljs...


Xilinx Zynq ZC702学习总结

Xilinx zynq zc702开发: 一、zynq开发整个生态系统搭建: 1.基础资料获取: https://github.com/Xilinx/ (包括:交叉编译工具,linux kernel源码,u-boot源码, device-tree源码, qemu, gdb等等) (提供 了几乎所...


Vivado 学习笔记 (五)编写IP核并通过AXI协议与ARM通信

参考资料:xilinx大学计划 实验平台:PYNQ开发板 最近发现了一块好玩的板子,PYNQ 这块板子最大的特点就是可以将所写的IP核封装成Python库的形式,然后通过在板载的xlinux系统下用户可以选择...


Zynq学习笔记——EMIO方式模拟I2C时序对ADV7511进行读写

创建硬件工程,很简单,PS接出两个EMIO和一个74.25M时钟 管脚约束 # ADV7511 I2C_SCL set_property PACKAGE_PIN AA18 [get_ports {gpio_0_tri_io[0]}] set_property IOSTANDARD LVCMOS33 [get_ports {gpio_0_tri_io[0]}] # ADV7511 I2C_SDA s...


FPGA深度学习应用再加速,深鉴科技发布基于Xilinx 的多场景人工智能服务方案

2017年10月24日,中国AI创业公司深鉴科技在北京举行盛大的2017新品发布会,面向如火如荼的AI应用集中推出五款基于赛灵思全可编程技术的自主研发的智能产品与深鉴深度学习开发软件DNNDK,强...


Vivado HLS学习笔记(四)利用FPGA进行简单的图像处理

参考资料:xilinx大学计划 实验平台:ZYBO开发板 本次实验要做的是一个基于FPGA的简单图像处理程序, 共实现两个功能: 1.输出一个灰度图像的直方图。 2.将一个曝光不足的图像进行处理,使...


GPIO Product Guide笔记(Xilinx)

GPIO是通用并行IO接口的简称。他将总线信号转化为IO设备要求的信号类型,实现地址译码输出数据,锁定输入数据缓冲的功能。GPIO控制器的基本结构如图1所示。 总线接口模块实现地址译码,...


Zynq学习笔记——EMIO方式模拟SCCB时序进行读写操作

一、SCCB介绍 SCCB是OmniVision Serial Camera Control Bus的简称,即OV公司的串行摄像机控制总线。OV公司定义的SCCB是一个3线结构,但是,为了缩减Sensor的pin封装,SCCB大多采用2线方式。 开始传输数据...