在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【PHYTEC開發板試用體驗】phyBOARD-Pollux i.MX 8M Plus 主機開發程序并嘗試開發板調試2

開發板試用精選 ? 來源:開發板試用 ? 作者:電子發燒友論壇 ? 2022-12-05 10:39 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文來源電子發燒友社區,作者:王志奇, 帖子地址:https://bbs.elecfans.com/jishu_2305273_1_1.html

之前測試搭建好了軟硬件開發環境后,我開始了項目開發嘗試,首先是調試了虛擬機Ubuntu的攝像頭獲取,然后利用QT程序調用攝像頭拍照,并嘗試在開發板上直接調試攝像頭調用程序,

第二個小目標是在主機上安裝OpenCV,并利用OpenCV調用攝像頭,然后是通過QT程序通過OpenCV實現調用攝像頭,并且通過QT直接在開發板上調式這個OpenCV調用攝像頭的應用

第三個大目標是將程序移植到開發板并在開發板上測試,這一步由于我之前沒有完全解決opt下root目錄空間的問題,未能完全實現,

并且在調試中發現,我的主機和開發板用了不同的攝像頭出現了我還未能解決的問題。目前還在嘗試中。

本次項目測試在開發板上沒有完全實現,主要是調試的root空間百分百被使用,把程序直接復制到開發板后由于攝像頭問題未能實現,

但是,整個開發過程以及遇到的問題還是能起到一些避坑幫助的。

接下來,我將測試開發過程簡單介紹,并把一些問題記錄出來,

我在上一篇中,測試好了主機的開發環境,因為開發板提供的系統已經完成了一些配置,只需要稍微測試程序調試即可,但是一定要注意在開發調試的時候,注意使用開發板root空間,不要將大的程序文件拷貝過去,會導致開發板端調試報錯的。

vmbox使用攝像頭的時候,需要在設置里面USB添加一個攝像頭篩選器,筆記本開發時候建議使用外接USB攝像頭,不建議使用筆記本自帶攝像頭開發測試,這會導致在開發板上測試使用攝像頭可能無法成功的問題。
2022-09-12_090918.png

另外,vmbox虛擬機需要安裝vbox官網的對應版本的usb擴展插件,這個很重要,下載好插件后需要在vbox啟動后的上方菜單設備設置中添加設備控制增強插件,并且,在選擇USB控制器的時候要選擇2.0 和3.0
2022-09-12_153218.png

兩個選項輪流嘗試,并添加USB攝像頭,有的usb攝像頭雖然是2。0但USB選擇器需要選3.0才能被vbox虛擬機中的Ubuntu系統識別。2022-09-12_155802.png
2022-09-12_154833.png

QT程序控制攝像頭開發程序在網上都有,比較簡單,創建新項目的時候注意選擇正確項目屬性如圖,一般Ubuntu系統設別了攝像頭,

2022-09-12_171856.png
QT代碼問題不大,在主機桌面測試后,可以選擇在ARM開發板上測試QT啟用攝像頭,你需要吧虛擬機識別的USB攝像頭插到開發板上進行測試,如果你使用的是筆記本自帶的攝像頭,這個時候多多少少會有些問題,另外,最好先關虛擬機再插拔攝像頭,我的系統奔潰了好幾次,耽誤了很多時間用于恢復虛擬機系統,很不穩定。

test.pro

QT += core gui

QT += multimedia

QT += multimediawidgets

greaterThan(QT_MAJOR_VERSION,
4): QT += widgets

TARGET
= QCameratest

TEMPLATE
= app

SOURCES
+= main.cpp

widget.cpp

HEADERS += widget.h

FORMS += widget.ui

.h

#ifndef
WIDGET_H

#define
WIDGET_H

#include

class
QCamera;

class
QCameraViewfinder;

class
QCameraImageCapture;

class
Widget : public QWidget

{

Q_OBJECT

public:

Widget(QWidget *parent = 0);



~Widget();

private
slots:

void exitBtnResponded();



void cameraImageCaptured(int,QImage);

private:

QCamera*             m_pCamera;       //讀取攝像頭



QCameraViewfinder*   m_pViewfinder;   //渲染攝像頭



QCameraImageCapture* m_pImageCapture; //獲取攝像頭當前幀

};

#endif
// WIDGET_H

main.cpp

#include
"widget.h"

#include

int
main(int argc, char *argv[])

{

QApplication a(argc, argv);



Widget w;



w.show();







return a.exec();

}

Widget.cpp

#include
"widget.h"

#include

#include

#include

#include

#include

#include

#include

Widget::Widget(QWidget
*parent)

: QWidget(parent)

{

setWindowTitle("QCamera");



m_pCamera = new QCamera(this);



m_pViewfinder = new

QCameraViewfinder(this);

m_pImageCapture = new

QCameraImageCapture(m_pCamera);

QPushButton* button1 = new

QPushButton("Capture");

QPushButton* button2 = new

QPushButton("Exit");

QVBoxLayout *mainLayout = new

QVBoxLayout(this);

mainLayout->addWidget(m_pViewfinder);



mainLayout->addWidget(button1);



mainLayout->addWidget(button2);



connect(button1, SIGNAL(clicked()),

m_pImageCapture, SLOT(capture()));

connect(button2, SIGNAL(clicked()), this,

SLOT(exitBtnResponded()));

connect(m_pImageCapture,

SIGNAL(imageCaptured(int,QImage)), this,
SLOT(cameraImageCaptured(int,QImage)));

m_pImageCapture->setCaptureDestination(QCameraImageCapture::CaptureToFile);

m_pCamera->setCaptureMode(QCamera::CaptureStillImage);

m_pCamera->setViewfinder(m_pViewfinder);



m_pCamera->start();

}

Widget::~Widget()

{

delete

m_pCamera;

delete

m_pViewfinder;

delete m_pImageCapture;

}

void
Widget::exitBtnResponded()

{

m_pCamera->stop();



close();

}

void
Widget::cameraImageCaptured(int, QImage image)

{

QString savepath =

QFileDialog::getSaveFileName(this,"Save
Capture","Capture","Image png(.png);;Image
jpg(
.jpg);;Image bmp(*.bmp)");

if(!savepath.isEmpty()){



    image.save(savepath);



}

第二部分是安裝OpenCV在Ubuntu上,并使用opencv調用攝像頭,

OpenCV安裝過程會不斷更新對應的庫, 以及更新cmake
相關,需要你給虛擬機再添加一個橋接到無線網卡的虛擬機網卡,如果,你使用的是網線與開發板調試的話。這樣就不需要來回切換了。

CSDN
上 有個叫不高興的
Ubuntu下QT 調用OpenCV使用攝像頭帖子中對于OpenCV安裝非常詳細,可以參考,之后的具體開發就參考思路即可。

其中,OpenCV安裝過程中要不斷注意報錯提示,安裝網絡上的步驟基本問題不大,少什么就裝什么,網絡暢通的話也就個把小時。
2022-09-13_092150.png

2022-09-13_092248.png

2022-09-13_092416.png

2022-09-13_094036.png

OpenCV安裝之后,有一件重要的事情就是升級QT,直接安裝QT5并設置環境變量,官方的Ubuntu 虛擬機中是QT4 ,這個開發的時候需要QT5,我使用的是OpenCV3, 已經很古老了,但都需要QT5支持。

QT調用OpenCV開啟攝像頭的代碼放在文章最后,
2022-09-13_105019.png

我在實現qt調用OpenCV設別人臉的時候,Ubuntu崩潰了,開發板之前的root空間也又成了百分百占用了,我之前已經重新擴展的etx4根空間了,但我發現我需要重新掛載一個新建的root空間,
2022-09-13_105606.png

另外就是,虛擬機以及硬盤所在
空間一定要留夠25G以上的空間,因為在安裝opencv相關時候,虛擬內存和虛擬空間增長速度很快,盤滿了虛擬機Ubuntu系統容易崩潰導致重裝環境,刪除虛擬機重新連接虛擬硬盤無法繼續開發和測試,

目前,我正在解決重裝環境,等解決完,下一期我將著重在開發板上測試項目程序,實現最終項目。

這是找到一個比較好用的OpenCV編輯照片和調用攝像頭的代碼

optest.cpp

#include

#include

using
namespace cv;

using
namespace std;

int
main(int argc, char** argv)

{

CvPoint center;

double scale = -3;

IplImage* image =
cvLoadImage("lena.jpg");

argc == 2? cvLoadImage(argv[1]) : 0;

cvShowImage("Image", image);

if (!image) return -1; center = cvPoint(image->width / 2,
image->height / 2);

for (int i = 0;iheight;i++)

for (int j = 0;jwidth;j++) {



    double dx = (double)(j - center.x) /

center.x;

double dy = (double)(i - center.y) /

center.y;

double weight = exp((dx*dx +

dy*dy)*scale);

uchar* ptr = &CV_IMAGE_ELEM(image,

uchar, i, j * 3);

ptr[0] = cvRound(ptr[0] * weight);



    ptr[1] = cvRound(ptr[1] * weight);



    ptr[2] = cvRound(ptr[2] * weight);



  }

Mat src;Mat dst;

src = cvarrToMat(image);

cv::imwrite("test.png", src);

cvNamedWindow("test",1);  imshow("test",

src);

cvWaitKey();



return

0;

}

g++ test.cpp -o testpkg-config --cflags--libs opencv

攝像頭使用代碼

#include

#include

#include

#include

using
namespace cv;

using
namespace std;

int
main()

{

//打開電腦攝像頭

VideoCapture cap(0);

if (!cap.isOpened())

{

cout << "error" <<

endl;

waitKey(0);



  return 0;

}

//獲得cap的分辨率

int w =
static_cast(cap.get(CV_CAP_PROP_FRAME_WIDTH));

int h =
static_cast(cap.get(CV_CAP_PROP_FRAME_HEIGHT));

Size videoSize(w, h);

VideoWriter
writer("RecordVideo.avi", CV_FOURCC('M', 'J', 'P', 'G'), 25,
videoSize);

Mat frame;

int key;//記錄鍵盤按鍵

char startOrStop = 1;//0 開始錄制視頻; 1 結束錄制視頻

char flag = 0;//正在錄制標志 0-不在錄制; 1-正在錄制

while (1)

{

cap >> frame;



  key = waitKey(100);



  if (key == 32)//按下空格開始錄制、暫停錄制   可以來回切換



  {



    startOrStop = 1 - startOrStop;



    if (startOrStop == 0)



    {



       flag = 1;



    }



  }



  if (key == 27)//按下ESC退出整個程序,保存視頻文件到磁盤



  {



    break;



  }







  if (startOrStop == 0 && flag==1)



  {



    writer << frame;



    cout << "recording"

<< endl;

}



  else if (startOrStop == 1)



  {



    flag = 0;



    cout << "end recording"

<< endl;

}



  imshow("picture", frame);

}

cap.release();

writer.release();

destroyAllWindows();

return 0;

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • PHYTEC
    +關注

    關注

    0

    文章

    19

    瀏覽量

    3796
  • 開發板試用
    +關注

    關注

    3

    文章

    302

    瀏覽量

    2389
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    有獎丨米爾 NXP i.MX91開發板免費試用來啦

    米爾與NXP合作發布的新品基于NXPi.MX91應用處理器的MYD-LMX91開發板免費試用名額來啦~~米爾提供了3套價值588元的MYD-LMX91開發板發起
    的頭像 發表于 06-05 08:02 ?609次閱讀
    有獎丨米爾 NXP <b class='flag-5'>i.MX</b>91<b class='flag-5'>開發板</b>免費<b class='flag-5'>試用</b>來啦

    米爾NXP i.MX 91核心發布,助力新一代入門級Linux應用開發

    、1路RS232 鳳凰端子引出,1路JTAG調試接口,1路ADC接口。 米爾 i.MX 91 核心配置型號 表 MYC-LMX91核心選型表米爾
    發表于 05-30 11:20

    【評測試用】合眾HZ-T536開發板免費試用體驗

    【評測試用】合眾HZ-T536開發板免費試用體驗
    的頭像 發表于 05-27 08:05 ?203次閱讀
    【評測<b class='flag-5'>試用</b>】合眾HZ-T536<b class='flag-5'>開發板</b>免費<b class='flag-5'>試用</b>體驗

    NXP i.MX 91開發板#支持快速創建基于Linux?的邊緣器件

    NXP Semiconductors FRDM i.MX 91開發板設計用于評估i.MX 91應用處理器,支持快速創建基于Linux ^?^ 的邊緣器件。該開發板還設計用于入門級Lin
    的頭像 發表于 05-19 10:55 ?677次閱讀
    NXP <b class='flag-5'>i.MX</b> 91<b class='flag-5'>開發板</b>#支持快速創建基于Linux?的邊緣器件

    NXP基于i.MX 91應用處理器打造的FRDM i.MX 91開發板特性參數詳解

    FRDM i.MX 91開發板。該開發板基于i.MX 91應用處理器打造,專為加速工業與物聯網的開發而設計,提供了一種經濟高效、安全且具有多
    的頭像 發表于 03-21 09:37 ?4.2w次閱讀
    NXP基于<b class='flag-5'>i.MX</b> 91應用處理器打造的FRDM <b class='flag-5'>i.MX</b> 91<b class='flag-5'>開發板</b>特性參數詳解

    NXP入門級Linux應用開發板,FRDM i.MX 91詳解

    FRDM平臺新品發布 FRDM i.MX 91開發板是一款低成本、體積小巧的開發板,集成了恩智浦i.MX 91應用處理器和IW610 Wi-Fi 6三射頻解決方案,專為入門級Linux
    的頭像 發表于 03-14 09:43 ?1185次閱讀
    NXP入門級Linux應用<b class='flag-5'>開發板</b>,FRDM <b class='flag-5'>i.MX</b> 91詳解

    有獎試用!!RA-Eco-RA4M2-100PIN-V1.0開發板試用活動報名

    RA-Eco-RA4M2-100PIN-V1.0開發板試用活動
    的頭像 發表于 03-13 12:10 ?491次閱讀
    有獎<b class='flag-5'>試用</b>!!RA-Eco-RA4<b class='flag-5'>M2</b>-100PIN-V1.0<b class='flag-5'>開發板</b><b class='flag-5'>試用</b>活動報名

    NXP i.MX 93 開發板#提供高效的機器學習 支持高能效的邊緣計算

    的GoPoint,通過提供全面的演示,加快各種用例的產品上市進程。 *附件:NXP i.MX 93 開發板 用戶設計手冊.pdf NXP i.MX 93 *附件:
    的頭像 發表于 03-10 15:30 ?1308次閱讀
    NXP <b class='flag-5'>i.MX</b> 93 <b class='flag-5'>開發板</b>#提供高效的機器學習 支持高能效的邊緣計算

    NXP首款搭載MPU的FRDM產品怎么樣?FRDM i.MX93開發板開箱速覽

    近期,NXP將i.MX 93系列處理器引入了FRDM系列產品線,推出了FRDM i.MX 93開發板,作為首款配備i.MX MPU的FRDM
    的頭像 發表于 02-26 14:56 ?1083次閱讀
    NXP首款搭載MPU的FRDM產品怎么樣?FRDM <b class='flag-5'>i.MX</b>93<b class='flag-5'>開發板</b>開箱速覽

    恩智浦推出FRDM i.MX 93開發板

    備受嵌入式開發者青睞的恩智浦FRDM開發平臺,迎來了一位新成員——FRDM i.MX 93開發板,這也是第一塊配備i.MX MPU的FRDM
    的頭像 發表于 02-21 14:22 ?1402次閱讀

    NXP推出FRDM i.MX 93開發板, 助力現代工業與邊緣智能開發

    近日,恩智浦半導體(NXP Semiconductor)推出了FRDM i.MX 93開發板,這是FRDM系列中第一款基于MPU推出的開發板,以低成本、緊湊的設計為核心,搭載了NXP i.MX
    的頭像 發表于 02-21 09:19 ?1474次閱讀
    NXP推出FRDM <b class='flag-5'>i.MX</b> 93<b class='flag-5'>開發板</b>, 助力現代工業與邊緣智能<b class='flag-5'>開發</b>

    【迅為電子】i.MX6UL和i.MX6ULL芯片區別與開發板對比

    【迅為電子】i.MX6UL和i.MX6ULL芯片區別與開發板對比
    的頭像 發表于 11-28 14:31 ?1314次閱讀
    【迅為電子】<b class='flag-5'>i.MX</b>6UL和<b class='flag-5'>i.MX</b>6ULL芯片區別與<b class='flag-5'>開發板</b>對比

    i.MX Linux開發實戰指南—基于野火i.MX系列開發板

    電子發燒友網站提供《i.MX Linux開發實戰指南—基于野火i.MX系列開發板.pdf》資料免費下載
    發表于 10-10 17:23 ?12次下載

    使用TPS65219為i.MX 8M Plus供電

    電子發燒友網站提供《使用TPS65219為i.MX 8M Plus供電.pdf》資料免費下載
    發表于 08-31 10:15 ?2次下載
    使用TPS65219為<b class='flag-5'>i.MX</b> <b class='flag-5'>8M</b> <b class='flag-5'>Plus</b>供電

    i.MX 8M Plus中的ISP圖像信號處理模塊特性概述

    日常生活中,人類約80%的信息來自于視覺信息,而視覺信息的載體是數以億萬計的圖片和視頻流,因此如何打造高效而智能的視覺處理解決方案,是擺在開發者面前的重要課題。 恩智浦推出的i.MX 8M P
    的頭像 發表于 08-02 11:39 ?1808次閱讀
    主站蜘蛛池模板: 亚洲系列中文字幕一区二区 | 又粗又爽又色男女乱淫播放男女 | 亚洲丰满熟妇毛片在线播放 | 羞羞答答91麻豆网站入口 | 欧美成人在线影院 | 欧美色图首页 | 三级在线网址 | 国产99久9在线视频 国产99久久九九精品免费 | 小雪被撑暴黑人黑人与亚洲女人 | 黄色一级一毛片 | 四虎影视最新地址 | 六月丁香激情网 | 国产香蕉久久精品综合网 | 欧美午夜视频在线观看 | 久久都是精品 | 在线免费观看视频 | 天天干天天操天天爽 | 亚洲欧美日韩高清mmm777 | 777丰满影院| 天堂成人网 | 99热久 | 九九久久国产精品大片 | 6一10周岁毛片免费 717影院理论午夜伦不卡久久 | 六月婷婷色| 精品一区二区在线观看 | 日本一区二区三区在线 视频观看免费 | 免费看国产黄色片 | 午夜神马 | 五月天狠狠 | 美女下面小内内的沟 | 欧美性猛片xxxxⅹ免费 | 婷婷六月丁 | 男女性高爱麻豆 | 色综合 成人 | 亚洲欧洲国产精品你懂的 | 国产在线五月综合婷婷 | 99久久国产免费中文无字幕 | 亚洲黄网在线 | 久久精品1| 成人国产精品2021 | 在线免费看黄的网站 |