校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > PyQt5實現(xiàn)將Matplotlib圖像嵌入到Scoll Area中顯示滾動條效果

PyQt5實現(xiàn)將Matplotlib圖像嵌入到Scoll Area中顯示滾動條效果

熱門標(biāo)簽:沈陽人工外呼系統(tǒng)價格 武漢外呼系統(tǒng)平臺 如何申請400電話費用 沈陽防封電銷卡品牌 外呼系統(tǒng)哪些好辦 富錦商家地圖標(biāo)注 江西省地圖標(biāo)注 池州外呼調(diào)研線路 沈陽外呼系統(tǒng)呼叫系統(tǒng)

前言

如題目所述,又是花費了兩天的時間實現(xiàn)了該功能,本來今天下午有些心灰意冷,打算放棄嵌入到Scoll Area中的想法,但最后還是心里一緊,仔細梳理了一下邏輯,最終實現(xiàn)了功能

效果展示

注意:當(dāng)你想實現(xiàn)一個子功能的時候,可以從新創(chuàng)建兩個文件:

×××.ui文件(如上圖效果展示是和我項目里的位置一樣的)×××.py文件(用來實現(xiàn)功能)

截圖

如上圖所示,紅色框里的文件是實現(xiàn)效果展示的所有源文件。但是文件夾testcode是為了實現(xiàn)將Matplotlib圖像嵌入到Scoll Area中所做的所有工作,稍后我會將參考資源放入文章末尾


一、解決步驟

1.1 qt designer

設(shè)計ui文件,控件的位置需要和自己項目中控件的位置相同,以便功能實現(xiàn)后方便項目調(diào)用

保存為testpiv.ui文件

1.2 pycharm編寫程序

直加看代碼不懂得話,建議查看1.3中的參考文章,我實現(xiàn)該功能也是來源于這些

代碼

import cv2
import os
import sys
import math


from PyQt5 import QtCore
from PyQt5.QtWidgets import *
from PyQt5.uic import loadUi

import matplotlib
from matplotlib import pyplot as plt
matplotlib.use("Qt5Agg")  # 聲明使用QT5
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
matplotlib.use("Qt5Agg")  # 聲明使用QT5
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar


#創(chuàng)建一個matplotlib圖形繪制類
class MyFigure(FigureCanvas):
    def __init__(self,width, height, dpi):
         # 創(chuàng)建一個Figure,該Figure為matplotlib下的Figure,不是matplotlib.pyplot下面的Figure
        self.fig = plt.figure(figsize=(width, height), dpi=dpi)
         # 在父類中激活Figure窗口,此句必不可少,否則不能顯示圖形
        super(MyFigure,self).__init__(self.fig)
         # 調(diào)用Figure下面的add_subplot方法,類似于matplotlib.pyplot下面的subplot(1,1,1)方法


class scollarea_showpic(QMainWindow):

    def __init__(self, queryPath=None, samplePath=None,limit_value = None):
        super().__init__()
        self.queryPath = queryPath  # 圖庫路徑
        self.samplePath = samplePath  # 樣本圖片
        self.limit_value = limit_value
        self.ui()

        plt.rcParams['font.sans-serif'] = ['KaiTi']  # 只有這樣中文字體才可以顯示

    def ui(self):
        loadUi('./testpiv.ui', self)
        self.SIFT(self.queryPath,self.samplePath,self.limit_value)

    def getMatchNum(self,matches,ratio):
        '''返回特征點匹配數(shù)量和匹配掩碼'''
        matchesMask=[[0,0] for i in range(len(matches))]
        matchNum=0
        for i,(m,n) in enumerate(matches):
            if m.distance  ratio * n.distance: #將距離比率小于ratio的匹配點刪選出來
                matchesMask[i]=[1,0]
                matchNum+=1
        return (matchNum,matchesMask)

    def SIFT(self,dirpath,picpath,limit_value):
        # path='F:/python/gradu_design/gra_des/'

        queryPath=dirpath #圖庫路徑
        samplePath=picpath  #樣本圖片

        comparisonImageList=[] #記錄比較結(jié)果

        #創(chuàng)建SIFT特征提取器
        sift = cv2.xfeatures2d.SIFT_create()

        #創(chuàng)建FLANN匹配對象

        """
        FLANN是類似最近鄰的快速匹配庫
            它會根據(jù)數(shù)據(jù)本身選擇最合適的算法來處理數(shù)據(jù)
            比其他搜索算法快10倍
        """
        FLANN_INDEX_KDTREE=0
        indexParams=dict(algorithm=FLANN_INDEX_KDTREE,trees=5)
        searchParams=dict(checks=50)
        flann=cv2.FlannBasedMatcher(indexParams,searchParams)

        sampleImage=cv2.imread(samplePath,0)
        kp1, des1 = sift.detectAndCompute(sampleImage, None) #提取樣本圖片的特征
        for parent,dirnames,filenames in os.walk(queryPath):
            print('parent :',parent,'   ','dirnames :',dirnames)
            for p in filenames:
                p=queryPath+p
                # print('pic file name :',p)
                queryImage=cv2.imread(p,0)

                kp2, des2 = sift.detectAndCompute(queryImage, None) #提取比對圖片的特征

                matches=flann.knnMatch(des1,des2,k=2) #匹配特征點,為了刪選匹配點,指定k為2,這樣對樣本圖的每個特征點,返回兩個匹配

                (matchNum,matchesMask) = self.getMatchNum(matches,0.9) #通過比率條件,計算出匹配程度
                matchRatio=matchNum*100/len(matches)
                drawParams=dict(matchColor=(0,255,0),
                        singlePointColor=(255,0,0),
                        matchesMask=matchesMask,
                        flags=0)
                comparisonImage=cv2.drawMatchesKnn(sampleImage,kp1,queryImage,kp2,matches,None,**drawParams)
                comparisonImageList.append((comparisonImage,matchRatio)) #記錄下結(jié)果

        comparisonImageList.sort(key=lambda x:x[1],reverse=True) #按照匹配度排序  降序

        new_comparisonImageList = comparisonImageList[:limit_value]
        count=len(new_comparisonImageList)

        column = 1 # 列
        row = math.ceil(count/column) # 行   math.ceil: 函數(shù)返回大于或等于一個給定數(shù)字的最小整數(shù)
        print('列:',column,  '  ','行:',row)

        #繪圖顯示
        F = MyFigure(width=10, height=10, dpi=100)  # 500 * 400

        for index,(image,ratio) in enumerate(new_comparisonImageList):
            F.axes = F.fig.add_subplot(row,column,index+1)
            F.axes.set_title('Similiarity %.2f%%' % ratio)
            plt.imshow(image)
            # 調(diào)整subplot之間的間隙大小
            plt.subplots_adjust(hspace=0.2)

        self.figure = F.fig
        # FigureCanvas:畫布
        self.canvas = FigureCanvas(self.figure)  # fig 有 canvas
        self.canvas.resize(self.picwidget.width(), 3000) # 畫布大小
        self.scrollArea = QScrollArea(self.picwidget)  # picwidget上有scroll
        self.scrollArea.setFixedSize(self.picwidget.width(), self.picwidget.height())
        self.scrollArea.setWidget(self.canvas)  # widget上有scroll   scroll有canvas

        self.nav = NavigationToolbar(self.canvas, self.picwidget)  # 創(chuàng)建工具欄

        self.setMinimumSize(self.width(), self.height())
        self.setMaximumSize(self.width(), self.height())
        self.setWindowTitle('Test')
if __name__ == "__main__":
    app = QApplication(sys.argv)
    queryPath='F:/python/gradu_design/gra_des/imges/' #圖庫路徑
    samplePath='F:/python/gradu_design/gra_des/imges/resized_logo1_1.jpg'  #樣本圖片
    main = scollarea_showpic(queryPath,samplePath,3)
    main.show()

    sys.exit(app.exec_())

下載地址

源碼下載:test_scollarea.py


總結(jié)

從目前我的認知來講,你想要實現(xiàn)的功能,基本上換一種思路、想法,都是可能會有解決方案的,只不過可能難度不同,你需要投入的精力不同。

結(jié)合本篇博客來說,從我產(chǎn)生這個想法來說,我一直在找資料,從一開始的簡單搜索同一個內(nèi)容到后面轉(zhuǎn)變搜索思路,到最后梳理邏輯框架、代碼,最后實現(xiàn)功能,此過程耗費的時間(兩天多)不算長,但也不算短。中間的過程是煎熬的,幾次試圖想放棄,最后還是挺了過來,還是很開心的。

只要不放棄,你就可以!

以上就是PyQt5實現(xiàn)將Matplotlib圖像嵌入到Scoll Area中顯示滾動條效果的詳細內(nèi)容,更多關(guān)于PyQt5 Matplotlib圖像嵌入的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • PyQt5 matplotlib畫圖不刷新的解決方案
  • PyQt5結(jié)合matplotlib繪圖的實現(xiàn)示例
  • 詳解pyqt5的UI中嵌入matplotlib圖形并實時刷新(挖坑和填坑)
  • 利用PyQt5+Matplotlib 繪制靜態(tài)/動態(tài)圖的實現(xiàn)代碼
  • pyqt5與matplotlib的完美結(jié)合實例
  • python GUI庫圖形界面開發(fā)之PyQt5滾動條控件QScrollBar詳細使用方法與實例
  • 在PYQT5中QscrollArea(滾動條)的使用方法

標(biāo)簽:黑龍江 常德 銅川 呂梁 通遼 潛江 阿里 株洲

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PyQt5實現(xiàn)將Matplotlib圖像嵌入到Scoll Area中顯示滾動條效果》,本文關(guān)鍵詞  PyQt5,實,現(xiàn)將,Matplotlib,圖像,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PyQt5實現(xiàn)將Matplotlib圖像嵌入到Scoll Area中顯示滾動條效果》相關(guān)的同類信息!
  • 本頁收集關(guān)于PyQt5實現(xiàn)將Matplotlib圖像嵌入到Scoll Area中顯示滾動條效果的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    欧美亚洲高清一区二区三区不卡| 69成人精品免费视频| 在线免费观看不卡av| 1000部国产精品成人观看| 成人18视频在线播放| 一区二区在线看| 91精品国产免费| 国产精品 欧美精品| 国产精品进线69影院| 在线观看区一区二| 久久精品国产亚洲aⅴ| 国产欧美日韩在线| 欧美视频一区二区| 精品一区二区精品| 亚洲欧美视频在线观看视频| 欧美一区二区私人影院日本| 国产一区二区三区免费在线观看 | 粉嫩欧美一区二区三区高清影视 | av亚洲精华国产精华精华| 三级久久三级久久| 亚洲欧洲国产专区| 久久蜜桃香蕉精品一区二区三区| 欧美日韩国产系列| 99久久久久久99| 国产在线一区二区| 日日夜夜免费精品视频| 亚洲免费高清视频在线| 久久精品亚洲国产奇米99| 欧美日韩免费电影| 一本久久综合亚洲鲁鲁五月天| 精品亚洲porn| 蜜臀久久久99精品久久久久久| 一区二区三区在线免费观看| 久久综合色综合88| 91精品欧美综合在线观看最新| 99精品国产视频| 国产成人午夜片在线观看高清观看| 日韩影院免费视频| 亚洲一区二区偷拍精品| 中文字幕在线一区| 欧美激情综合五月色丁香小说| 日韩一级免费观看| 欧美日韩亚洲高清一区二区| 色综合久久久久综合体桃花网| 国产传媒日韩欧美成人| 九九九久久久精品| 精品一区二区三区久久久| 秋霞午夜鲁丝一区二区老狼| 日韩黄色免费网站| 亚洲成人午夜影院| 一区二区免费视频| 亚洲成人av电影| 亚洲va国产va欧美va观看| 亚洲一区在线视频| 性感美女久久精品| 美女视频一区二区| 极品少妇一区二区| 粉嫩13p一区二区三区| gogogo免费视频观看亚洲一| 成人白浆超碰人人人人| 91网站在线观看视频| 91麻豆免费观看| 日本精品一级二级| 精品视频全国免费看| 欧美一区国产二区| 欧美草草影院在线视频| 久久久一区二区三区捆绑**| 国产欧美日韩另类一区| 国产精品乱子久久久久| 一区二区三区四区视频精品免费 | 中文字幕制服丝袜成人av| 亚洲欧美另类图片小说| 亚洲国产一区二区三区青草影视| 亚洲成人av在线电影| 日本成人在线电影网| 激情文学综合插| zzijzzij亚洲日本少妇熟睡| 91国内精品野花午夜精品| 欧美精品在欧美一区二区少妇| 欧美一区二区三区在线电影 | 久久一夜天堂av一区二区三区| 国产欧美精品区一区二区三区 | 亚洲柠檬福利资源导航| 午夜久久久久久久久久一区二区| 另类小说欧美激情| 97久久人人超碰| 日韩一区二区三区观看| 成人免费一区二区三区视频| 五月婷婷激情综合| 成人国产视频在线观看| 91精品国产综合久久精品app| 国产欧美日韩麻豆91| 午夜成人免费电影| 成人avav影音| 欧美成人精品福利| 亚洲成人动漫在线观看| 99re8在线精品视频免费播放| 欧美成va人片在线观看| 亚洲福中文字幕伊人影院| 国产成a人无v码亚洲福利| 欧美日韩精品一区二区在线播放| 国产丝袜美腿一区二区三区| 日日摸夜夜添夜夜添精品视频 | 午夜精品福利在线| 不卡一卡二卡三乱码免费网站| 欧美精品久久一区| 亚洲精选视频免费看| 国产成人日日夜夜| 精品国产一区二区精华| 亚洲成人一二三| 欧美视频一区二区三区四区| 亚洲素人一区二区| 成人h动漫精品一区二区| 久久久久久久综合日本| 日本视频一区二区| 欧美日韩和欧美的一区二区| 一区二区三区蜜桃网| 91网页版在线| 亚洲乱码国产乱码精品精小说| 成人免费观看男女羞羞视频| 久久蜜桃av一区精品变态类天堂 | 精品av久久707| 日韩国产精品大片| 欧美高清hd18日本| 午夜成人在线视频| 91精品国产乱码| 青娱乐精品视频| 日韩美女视频在线| 国产一区二区三区在线观看免费 | 亚洲精品第一国产综合野| 成人一区二区三区在线观看| 国产亚洲欧美色| 丁香一区二区三区| 国产精品久久三| 91天堂素人约啪| 亚洲一区二区欧美| 欧美精品在线观看一区二区| 天天综合天天综合色| 欧美一区二视频| 韩日精品视频一区| 国产日本欧洲亚洲| www.99精品| 亚洲成年人影院| 精品国产污网站| 成人免费观看视频| 亚洲国产婷婷综合在线精品| 欧美一区二区日韩| 国产精品99久久久久久似苏梦涵| 中文字幕不卡在线播放| 色综合色综合色综合| 性感美女久久精品| 久久久九九九九| 色老头久久综合| 美女一区二区视频| 国产精品伦一区二区三级视频| 欧洲国内综合视频| 激情深爱一区二区| 一区二区三区丝袜| 精品女同一区二区| 色综合一区二区三区| 中文字幕中文字幕中文字幕亚洲无线| 成人综合婷婷国产精品久久免费| 亚洲天堂福利av| 欧美一区二区人人喊爽| 成人免费看的视频| 美国一区二区三区在线播放| 亚洲色图在线视频| 精品国产伦一区二区三区观看方式| kk眼镜猥琐国模调教系列一区二区| 午夜精品福利久久久| 欧美国产日韩亚洲一区| 欧美日韩五月天| 成人av动漫在线| 国产一区二区三区免费观看| 亚洲国产日韩一区二区| 中文一区在线播放| 日韩精品一区二区三区视频播放 | 91视频免费观看| 麻豆精品一区二区三区| 亚洲天堂精品视频| 国产三级欧美三级日产三级99| 欧美日韩dvd在线观看| 91丨九色porny丨蝌蚪| 国产精品资源在线看| 日韩精品色哟哟| 一区二区三区四区av| 日韩伦理av电影| 久久网站最新地址| 欧美一区二区三区白人| 欧美男人的天堂一二区| 色综合天天综合给合国产| 国产精品一区二区黑丝| 久久9热精品视频| 天堂久久一区二区三区| 夜夜嗨av一区二区三区网页| 亚洲色图视频免费播放| 国产精品午夜免费| 国产精品色噜噜| 欧美国产日韩一二三区| 国产蜜臀97一区二区三区 |