精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

OpenCV+PyQT5開發桌面應用幾個重要的坑與解決

OpenCV學堂 ? 來源:OpenCV開發者聯盟 ? 作者: 2號高手 ? 2022-12-13 11:55 ? 次閱讀

PyQT5+OpenCV開發


大概去年八月份的時候,我打算用OpenCV+PyQT5開發一套OpenCV教學演示與快速驗證桌面軟件,說實話那個時候我對PyQT5的理解就是Hello World水平。經過一年多開發錘煉,不斷實踐,我感覺是熟練掌握了界面組件與布局組件應用、事件響應、多線程與數據傳輸、各種繪圖與繪制控件編程技巧、應用發布打包等環節,完成了這套教學軟件的開發與測試,并且已經支持Windows、Ubuntu、Jetpack等平臺運行,而且全部通過測試。下面就放幾張核心產品的圖片

af2ba9ce-7a16-11ed-8abf-dac502259ad0.jpg

af3f7a30-7a16-11ed-8abf-dac502259ad0.jpg

af569f30-7a16-11ed-8abf-dac502259ad0.jpg


三個最重要坑


開發過程遇到最大的兩個個坑就是事件重復響應與界面控件無法響應鍵盤輸入,最終這兩個問題是都解決了。在部署階段,在不同操作系統Windows、Ubuntu、Jetpack兼容性測試遇到最大的一個坑就是PyQT5版本支持的問題。這個通過仔細分析原因也得到解決。這幾個問題網上都有各自不正確,不徹底的解決方法,無法真正解決這些問題,而我是徹底的解決這三個典型問題,這里分享一下經驗,避免大家踩坑。


01PyQT5槽函數多次響應執行的問題


典型的就是點擊按鈕多次執行槽函數,網上很多的解決方法就是添加

# disconnect/connect
def solution_bad():
        mybutton.disconnect()
        mybutton.clicked.connect(my_func)

這種方法只是治標不治本,真實的原因是因為你的組件多次綁定槽函數了,桌面應用程序開發在多個界面之間切換的時,特別要小心注意這點。后來我都是幫事件綁定槽函數單獨寫在一個方法里面,確保只調用一次!例如:


02UI組件無法響應鍵盤輸入


界面上QLineEdit/QSpinbox等組件統統無法響應鍵盤輸入了,重新自己寫一個簡單的例子可以,在桌面應用程序中不行,無法輸入。但是我發現一個奇怪方法可以讓QLineEdit/QSpinbox等組件支持輸入,就是安裝“谷歌輸入法”,其它輸入法我都測試過,根本還是無法輸入,最終找到的原因是PyQT5中Widget界面鍵盤交互是有函數支持的,當桌面應用程序切換時候時候,必須先釋放當前的鍵盤綁定,然后在切換后的鍵盤中才可以使用,否則就會發生輸入UI組件一直無法響應鍵盤輸入,這個在Windows/Ubutun/Jetpack上都一樣,親測如此,解決的方法很簡單,在切換操作之前添加釋放鍵盤的函數調用就可以了。總計兩行代碼完成。貼一下如下:

af74e6f2-7a16-11ed-8abf-dac502259ad0.png

afab1150-7a16-11ed-8abf-dac502259ad0.png


第一行放在構造函數里面,第二行放在你切換之前。就這樣完美解決了!

但是這個問題困擾了我幾個月,原因是各種教程里面不會涉及這么復雜的UI切換跟開發,但是你開發桌面應用程序就會涉及,所以遇到了這個問題之后,網上都沒有答案,最后我自己覺得是鍵盤輸入問題,無意中搜索到官方文檔看到這兩個方法,靈機一動,發現驚喜了!所以遇到問題,一定先搜索一下官方的API開發文檔,搜索關鍵字!

03排版是門技術活


在Ubutun系統上運行時候發現一直有下面的錯誤:

qt.qpa.plugin:CouldnotloadtheQtplatformplugin“xcb”



正常情況下安裝相關lib之后即可解決,但是如果你安裝OpenCV4.5.x版本,則會一直遇到這個錯誤,無論是Ubutun18/ Ubutun20,網上提供的解決方案都是把OpenCV版本回退到4.3.1之前。

我仔細分析了錯誤信息跟安裝的苦支持信息,發現原因是PyQT5安裝版本跟支持庫版本不一致導致的沖突問題,我把PyQT5版本從5.15改成5.12成功解決這個錯誤,而且OpenCV可以直接用最新版本。

這幾個是讓我印象特別深刻的錯誤,每個都是多方查證,分析之后解決的。歡迎在下面留言分享你用PyQT5開發遇過的那些讓你印象深刻的坑與解決方法!

總結:

通過開發這款軟件的經驗積累與知識整理,現在有個人想要學習PyQT5桌面應用程序開發,我三個月肯定能讓他達到我現在的水平,這個就是經驗跟系統化學習之后總結出來的好處!讓后來人少走彎路,少踩坑!

針對上述三個問題,如果你有更好的解決方案,歡迎留言評論!

審核編輯:湯梓紅

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

    關注

    3

    文章

    4304

    瀏覽量

    62427
  • OpenCV
    +關注

    關注

    30

    文章

    628

    瀏覽量

    41259
  • pyqt5
    +關注

    關注

    0

    文章

    25

    瀏覽量

    3394

原文標題:OpenCV+PyQT5開發桌面應用幾個重要的坑與解決

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    可視可交互!H618上用OpenCV讀取圖像顯示到PyQt5窗口上

    這里分享一個代碼,功能是使用圖像處理庫opencv從攝像頭獲取數據,縮放后從pyqt5的窗口中顯示出來。安裝opencvsudo pip3 install opencv-python創建一個
    發表于 01-10 09:55

    在全志H616核桃派開發板上進行PyQt5的代碼編寫和運行

    ctrl+c 即可退出窗口程序。 通過3.5寸LCD顯示 上面方法既可通過核桃派HDMI顯示器顯示,也可以通過3.5寸LCD顯示。3.5寸顯示屏使用說明:3.5寸觸摸顯示屏 無桌面系統運行pyQT5
    發表于 05-13 09:59

    PyQt

    。它是一個多平臺的工具包,可以運行在所有主要操作系統上,包括UNIX,Windows和Mac。 PyQt采用雙許可證,開發人員可以選擇GPL和商業許可。在此之前,GPL的版本只能用在Unix上,從PyQt
    發表于 04-14 10:26

    如何使用Python配合PyQT5模塊來開發圖形化應用程序

    By Toradex秦海1).簡介隨著Python在互聯網人工智能領域的流行,大家也慢慢感受到Python開發的便利,本文就基于嵌入式ARM平臺,介紹使用Python配合PyQT5模塊來開發圖形化
    發表于 12-24 06:41

    OpenCV開發環境的配置

    OpenCV3編程入門》書本配套源代碼:OpenCV開發環境的配置
    發表于 06-06 15:20 ?8次下載

    如何安裝和配置OpenCVOpenCV幾個小問題解答

    本文檔的主要內容詳細介紹的是如何安裝和配置OpenCVOpenCV幾個小問題解答包括了:安裝和配置OpenCV,Highgui.h與CvvImage類的問題:,如何通過攝像頭獲取視
    發表于 12-17 17:25 ?9次下載
    如何安裝和配置<b class='flag-5'>OpenCV</b>及<b class='flag-5'>OpenCV</b>的<b class='flag-5'>幾個</b>小問題解答

    總結那么幾個C語言中的“

    總結幾個C語言中的“
    的頭像 發表于 01-16 10:52 ?2549次閱讀

    PyQt5的中文教程電子書免費下載

     本教程的目的是帶領你入門PyQt5。教程內所有代碼都在Linux上測試通過。PyQt4 教程是PyQt4的教程,PyQt4是一個Python(同時支持 2和3)版的Qt庫。
    發表于 08-06 08:00 ?13次下載
    <b class='flag-5'>PyQt5</b>的中文教程電子書免費下載

    notepad-pyqt5 PyQt記事本

    ./oschina_soft/gitee-notepad-pyqt5.zip
    發表于 05-24 09:20 ?4次下載
    notepad-<b class='flag-5'>pyqt5</b> <b class='flag-5'>PyQt</b>記事本

    PyQT5+OpenCV開發的應用如何打包發布?

    我自己用PyQT5寫了一個應用程序,基本上都寫好了,到了打包發布這個環節,我知道的有兩個工具可以幫我打包分別是。
    的頭像 發表于 10-25 09:40 ?2583次閱讀

    2023年Python GUI桌面應用開發該選哪個庫

    當前主流的Python GUI庫主要有PyQT5、TKinter、Pyside、PyQT5/PySide+QML、Kivy、PySimpleGUI等,PyQT5是它們當中絕對的佼佼者,它基于著名的Qt框架構建,擁有眾多
    的頭像 發表于 01-30 11:57 ?1663次閱讀

    PyQT5+OpenCV多線程協作演示

    學習多線程最典型的問題就是如何在多個線程之間傳遞消息與寫作,PyQT5的線程支持在不同線程之間傳遞信號觸發事件,實現多個線程之間的協助,完成諸如生產者-消費者這樣經典的多線程協作。本文將通過QThread與信號槽機制構建一個生產者-消費者模型,演示多個線程之間的協作。
    的頭像 發表于 03-08 14:58 ?1305次閱讀

    PyQT開發上位機教程

    ,兩個都需要安裝,需要記住安裝的位置,一會兒需要設置環境變量。 pip install PyQt5pip install PyQt5 - tools ( DemoProject )E : \WorkSp
    發表于 05-08 09:59 ?3次下載
    <b class='flag-5'>PyQT</b><b class='flag-5'>開發</b>上位機教程

    使用pycharm開發上位機配置pyqt5的環境

    在上位機的開發過程中,使用QT的圖形化界面,是開發上位機最好最簡單的選擇,因此我將講述配置pyqt5的環境。 軟件安裝: 安裝:pycharm的社區2021.02版 QT(安裝參考https
    發表于 05-29 16:12 ?0次下載
    使用pycharm<b class='flag-5'>開發</b>上位機配置<b class='flag-5'>pyqt5</b>的環境

    基于PyQT5與ONNXRUNTIME實現風格遷移應用

    2023年一月份跟二月份創建了一個PyQT5人工智能軟件開發系列的文章系列,過去的兩個月都沒怎么更新,心里一直想有時間繼續更新下去,今天又更新了一篇,基于PyQT5實現多線程、界面化、風格遷移模型的實時推理。
    的頭像 發表于 10-25 10:35 ?494次閱讀
    基于<b class='flag-5'>PyQT5</b>與ONNXRUNTIME實現風格遷移應用