12、新手入手树莓派教程--Qt中使用wiringPi来驱动RGB灯、使用opencv打开摄像头(代码分享)
2017-12-08 09:51
921 查看
环境:
1、树莓派3b
2、Qt
3、opencv
4、wiringPi
功能:
1、驱动USB摄像头并在窗口中显示
2、驱动GPIO口,控制LED灯的闪烁
整体效果图:
代码如下:
工程链接:树莓派驱动USB摄像头个驱动GPIO口的代码
1、树莓派3b
2、Qt
3、opencv
4、wiringPi
功能:
1、驱动USB摄像头并在窗口中显示
2、驱动GPIO口,控制LED灯的闪烁
整体效果图:
代码如下:
起始 #include "cameramanage.h" #include "ui_cameramanage.h" #include <QPixmap> #include <QFileDialog> #include <QPicture> #include <iostream> #include <wiringPi.h> CameraManage::CameraManage(QWidget *parent) : QMainWindow(parent), ui(new Ui::CameraManage) { ui->setupUi(this); timer = new QTimer(this); timer_led = new QTimer(this); cap.set(CV_CAP_PROP_FRAME_WIDTH, 640); cap.set(CV_CAP_PROP_FRAME_HEIGHT, 240); cap.set(CV_CAP_PROP_FPS, 30);//帧数 cap.set(CV_CAP_PROP_BRIGHTNESS, 1);//亮度 1 cap.set(CV_CAP_PROP_CONTRAST,40);//对比度 40 cap.set(CV_CAP_PROP_SATURATION, 50);//饱和度 50 cap.set(CV_CAP_PROP_HUE, 50);//色调 50 cap.set(CV_CAP_PROP_EXPOSURE, 50);//曝光 50 /*信号和槽*/ connect(timer, SIGNAL(timeout()), this, SLOT(readFarme())); // 时间到,读取当前摄像头信息 connect(timer_led, SIGNAL(timeout()), this, SLOT(LED_open())); } CameraManage::~CameraManage() { delete ui; delete timer; } QImage CameraManage::Mat2QImage(Mat& cvImg) { QImage qImg; if(cvImg.channels()==3) //3 channels color image { cv::cvtColor(cvImg,cvImg,CV_BGR2RGB); qImg =QImage((const unsigned char*)(cvImg.data), cvImg.cols, cvImg.rows, cvImg.cols*cvImg.channels(), QImage::Format_RGB888); } else if(cvImg.channels()==1) //grayscale image { qImg =QImage((const unsigned char*)(cvImg.data), cvImg.cols,cvImg.rows, cvImg.cols*cvImg.channels(), QImage::Format_Indexed8); } else { qImg =QImage((const unsigned char*)(cvImg.data), cvImg.cols,cvImg.rows, cvImg.cols*cvImg.channels(), QImage::Format_RGB888); } return qImg; } QImage CameraManage::ScaleImage2Label(QImage qImage, QLabel* qLabel) { QImage qScaledImage; QSize qImageSize = qImage.size(); QSize qLabelSize = qLabel->size(); double dWidthRatio = 1.0*qImageSize.width() / qLabelSize.width(); double dHeightRatio = 1.0*qImageSize.height() / qLabelSize.height(); if (dWidthRatio>dHeightRatio) { qScaledImage = qImage.scaledToWidth(qLabelSize.width()); } else { qScaledImage = qImage.scaledToHeight(qLabelSize.height()); } return qScaledImage; } void CameraManage::on_open_clicked() { cap.open(-1); if (cap.isOpened()) { cout << "cap is opened" << endl; }else { cout << "cap is not opened" << endl; } timer->start(40); // 开始计时,超时则发出timeout()信号 } void CameraManage::readFarme() { cap >> frame; image = Mat2QImage(frame); // imshow("", frame); QImage scaleImage = ScaleImage2Label( image, ui->lable ); // 显示到label上 ui->lable->setPixmap(QPixmap::fromImage(scaleImage)); ui->lable->setAlignment(Qt::AlignCenter); ui->lable->show(); } void CameraManage::GPIO_init() { wiringPiSetup(); pinMode(0, OUTPUT); timer_led->start(500); } void CameraManage::LED_open() { if(led_turn == 0) { digitalWrite(0, HIGH); led_turn++; }else{ digitalWrite(0, LOW); led_turn--; } } 截止
工程链接:树莓派驱动USB摄像头个驱动GPIO口的代码
相关文章推荐
- 13、新手入手树莓派教程--Qt中使用wiringPi来驱动RGB灯、使用opencv打开网络摄像头(代码分享)
- 11、新手入手树莓派教程--Qt中使用wiringPi来驱动RGB灯、使用opencv打开摄像头
- 10、新手入手树莓派教程--Qt中使用wiringPi来开发工程
- 15、新手入手树莓派教程--Qt工程中使用DHT11传感器
- 9、新手入手树莓派教程--WiringPi控制GPIO
- 5、新手入手树莓派教程--安装opencv
- 17、新手入手树莓派教程--超声波测距(HC-SR04)的使用
- 14、新手入手树莓派教程--DHT11传感器的使用
- 4、新手入手树莓派教程--安装Qt
- 19、新手入手树莓派教程--4*4矩阵按键模块的使用
- 18、新手入手树莓派教程--深入学习wiringPi
- 8、新手入手树莓派教程--csi摄像头的安装
- 9、新手入手树莓派教程--WiringPi控制GPIO
- Qt5下实现摄像头预览及捕获图像方法二(openCV3与Qt5交互使用)
- 树莓派入门教程——使用Qt开发界面程序
- 使用opencv获取海康IPC摄像头教程
- 树莓派:使用OpenCV调用自带的摄像头.
- 使用PCI-E USB3.0扩展板卡解决OPENCV不能同时打开同品牌摄像头的问题
- Qt使用教程之指定代码样式设置
- 虚拟机下打开摄像头(Linux ubuntu 2.6.32-122-rtai+QT+opencv)