|
TQ-lkp 发表于 2012-1-8 10:07
把你的代码贴上来
是代码运行的时候报的错,还是根本就没有启动
你编绎的opencv的类库使用的交叉编绎器的 ...
不好意思 这几天在忙着别的事情
源码如下:
头文件ledtext.h:
- #ifndef LEDTEXT_H
- #define LEDTEXT_H
- #include <QWidget>
- #include <QtGui/QWidget>
- #include <qprocess.h>
- namespace Ui {
- class ledtext;
- }
- class ledtext : public QWidget {
- Q_OBJECT
- public:
- ledtext(QWidget *parent = 0);
- ~ledtext();
- public slots:
- void pbHelpClicked()
- {}
- protected:
- void changeEvent(QEvent *e);
- private:
- Ui::ledtext *ui;
- };
- #endif // LEDTEXT_H
复制代码
源文件:ledtext.cpp:
- #include "ledtext.h"
- #include "ui_ledtext.h"
- #include <QPixmap>
- #include <QFile>
- #include <sys/ioctl.h>
- #include <stdio.h>
- #include <fcntl.h>
- #include <cv.h>
- #include <highgui.h>
- //这是一个将opencv加载图片的格式转换成qt支持的QImiage*格式的类,
- //用getQImage()完成转换。
-
- class QCvImage{
- private:
- IplImage* cvBGRImg;
- IplImage* cvRGBImg;
- public:
- QCvImage()
- { }
- QCvImage(const char* imgPath)
- {
- cvBGRImg = cvLoadImage(imgPath, true);
- cvRGBImg = NULL;
- }
- QImage* getQImage(void)
- {
- if(cvBGRImg == NULL)
- return NULL;
- cvRGBImg = cvCloneImage(cvBGRImg);
- cvCvtColor(cvBGRImg, cvRGBImg, CV_BGR2RGB);
- uchar* imgData = (uchar*)(cvRGBImg->imageData);
- QImage* qimg = new QImage(imgData, cvRGBImg->width, cvRGBImg->height, QImage::Format_RGB888);
- return qimg;
- }
- ~QCvImage()
- {
- cvReleaseImage(&cvBGRImg);
- cvReleaseImage(&cvRGBImg);
- }
- };
- ledtext::ledtext(QWidget *parent) :
- QWidget(parent),
- ui(new Ui::ledtext)
- {
- ui->setupUi(this);
- QCvImage image("/opt/EmbedSky/baboon200.jpg");
- QImage* qimage=image.getQImage();
- QPixmap pixmap=QPixmap::fromImage(qimage->scaled(size(),Qt::IgnoreAspectRatio));
- QPalette palette;
- palette.setBrush(backgroundRole(),QBrush(pixmap));
- setPalette(palette);
- ui->pbHelp->setText("");
- ui->pbHelp->setFixedSize(QSize(82,83));
- QPixmap pix("/opt/EmbedSky/stuff.jpg");
- pix=pix.scaled(82,83,Qt::IgnoreAspectRatio);
- ui->pbHelp->setIcon(QIcon(pix));
- connect(ui->pbHelp,SIGNAL(clicked()),this,SLOT(pbHelpClicked()));
- ui->pbExit->setText("");
- ui->pbExit->setFixedSize(82,83);
- ui->pbExit->setIconSize(QSize(82,83));
- pix.load("/opt/EmbedSky/cat.jpg",0,Qt::AutoColor);
- pix=pix.scaled(82,83,Qt::IgnoreAspectRatio);
- ui->pbExit->setIcon(QIcon(pix));
- connect(ui->pbExit,SIGNAL(clicked()),this,SLOT(close()));
- }
- ledtext::~ledtext()
- {
- delete ui;
- }
- void ledtext::changeEvent(QEvent *e)
- {
- QWidget::changeEvent(e);
- switch (e->type()) {
- case QEvent::LanguageChange:
- ui->retranslateUi(this);
- break;
- default:
- break;
- }
- }
复制代码
main.cpp:
- #include <QtGui/QApplication>
- #include "ledtext.h"
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- ledtext w;
- w.showFullScreen();
- return a.exec();
- }
复制代码
以上程序在X86环境下用X86版本的opencv库 编译运行都成功 可以正常显示图片。
用arm-linux 版的opencv库编译能成功 可是拷贝到板子上(板上已经复制了arm版的opencv库)
运行命令 ./ledtest 立即显示 Bus error 。
编译的opencv类库用的交叉编译器是一致的,我只有一个交叉编译器。
麻烦版主看看 谢谢!!
|
|