中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

泰國做彩票網(wǎng)站企業(yè)網(wǎng)站營銷的實現(xiàn)方式

泰國做彩票網(wǎng)站,企業(yè)網(wǎng)站營銷的實現(xiàn)方式,阿里巴巴網(wǎng)站怎么做,韓國建筑網(wǎng)站個人打卡,慎看。 指路大佬:【手把手帶你實戰(zhàn)YOLOv5-入門篇】YOLOv5 Pyside6可視化界面_嗶哩嗶哩_bilibili 零、虛擬環(huán)境遷移路徑后pip報錯解決 yolov5-master文件夾我換位置后,無法pip install了。解決如下: activate.bat中修改…

個人打卡,慎看。

指路大佬:【手把手帶你實戰(zhàn)YOLOv5-入門篇】YOLOv5 Pyside6可視化界面_嗶哩嗶哩_bilibili

零、虛擬環(huán)境遷移路徑后pip報錯解決

yolov5-master文件夾我換位置后,無法pip install了。解決如下:

  • activate.bat中修改:@set "VIRTUAL_ENV=D:\yolov5-master\venv"
  • activate中修改:VIRTUAL_ENV='D:\yolov5-master\venv'
  • 更新pip:python -m pip install --upgrade pip

參考:Python 虛擬環(huán)境遷移路徑后pip報錯解決記錄_pybot移動路徑后-CSDN博客

【建議掛v,速度會快】

一、環(huán)境安裝

  • 下載Pyside6:? pip install pyside6

我的pyside6不在Python.exe的上級文件夾的子目錄下,packages和python.exe的位置也不同,發(fā)現(xiàn)解釋器的位置設(shè)置錯了,之前一直提示我Invalid,我也沒有注意。

一般python.exe和site-packages的位置關(guān)系是,python.exe和它的上級在同一文件夾下。

比如anaconda下python.exe, lib

lib下site-packages ,也可以輸入以下命令,查找site-packages的位置。

import site
print(site.getsitepackages())

以后安裝了包,但是無法import,也可以查找site-packages的位置,很有可能這里面沒有那個包。是python.exe選取的錯誤,修改為對應(yīng)的python.exe即可。

  • 找到pyside6/designer.exe,將快捷方式發(fā)送到桌面。
  • up主用vscode安裝了qt for python插件,但是我使用的是Pycharm,vscode不熟練,在pycharm中,設(shè)置setting->tools->external tools,點擊+ ,添加,在Program中,輸入designer.exe的位置。name和group隨便設(shè)置,點擊ok。

二、設(shè)計UI

  1. 新建mainwindow
  2. 把兩個textlabel拖到mainwindow中【存放圖片】,用vertical line隔離他們。拖兩個pushbutton【按鈕】。
  3. 勾選scaledcontents可以實現(xiàn)label中存放內(nèi)容縮放。將alignment設(shè)置水平中心對齊。
  4. 修改對象的名字,便于記憶。比如label1改成input
  5. 保存到y(tǒng)olov5-master文件夾下,修改名字為main_window

三、將ui轉(zhuǎn)換成py

添加external tool

我的血淚教訓(xùn),改這個錯改了40min:

  1. program不要選site-packages\Pyside6\uic.exe 這樣轉(zhuǎn)換出來的結(jié)果可能是C++代碼。
  2. 選\Scripts\pyside6-uic.exe這個文件

  • Program: D:\anaconda\Scripts\pyside6-uic.exe 【輸入自己的pyside6-uic.exe文件路徑】
  • Arguments: $FileName$ -o $FileNameWithoutExtension$.py
  • working directory: $FileDir$

四、調(diào)用mainwindow

import sysfrom PySide6.QtWidgets import QMainWindow, QApplicationfrom main_window import Ui_MainWindow
#這里的main_window是你的ui轉(zhuǎn)換成的py名字
#Ui_MainWindow是main_window里的class名字class MainWindow(QMainWindow,Ui_MainWindow):def __init__(self):super(MainWindow,self).__init__()   #self后不要加(),我加了()報錯無法調(diào)用mainwindowself.setupUi(self)if __name__=="__main__":app=QApplication(sys.argv)window1 = MainWindow()window1.show()app.exec()

運行上面的指令即可彈出UI設(shè)計界面。

五、關(guān)聯(lián)按鈕和代碼

bing_slots()函數(shù)負責綁定。det_image和pushButton_2【忘改了】是那兩個按鈕的名字。

import sysfrom PySide6.QtWidgets import QMainWindow, QApplication,QFileDialog
#QFileDialog可以訪問文件資源管理器from main_window import Ui_MainWindowclass MainWindow(QMainWindow,Ui_MainWindow):def __init__(self):super(MainWindow,self).__init__()self.setupUi(self)self.bind_slots()  #不要忘記調(diào)用,不寫這句話無法顯示。def open_image(self):print("點擊顯示圖片!")def open_video(self):print("點擊顯示視頻!")def bind_slots(self):#綁定self.det_image.clicked.connect(self.open_image)self.pushButton_2.clicked.connect(self.open_video)if __name__=="__main__":app=QApplication(sys.argv)window1 = MainWindow()window1.show()app.exec()

六、獲取圖片

  • 一開始無法顯示,我設(shè)置QPixmap("./datasets/images/train/30.jpg")發(fā)現(xiàn)可以顯示,于是判斷是filepath格式的問題;
  • QPixmap的參數(shù)是string類型的。打印file_path[0]發(fā)現(xiàn)打印出來的仍然是list格式。
  • 于是轉(zhuǎn)換list為string類型。filePath=','.join(file_path[0])
#與上個代碼省略了相同的部分,方便理解。from PySide6.QtGui import QPixmap
#顯示圖片def open_image(self):file_path=QFileDialog.getOpenFileNames(self,dir="./datasets/images/train",filter="*.jpg;*.png")#設(shè)置從dir里找圖片, filter分號隔離不同格式#file_path返回的是有兩個元素的數(shù)組,我們運行后,發(fā)現(xiàn)第一個元素是路徑,第二個元素是格式。我們只輸出路徑。if file_path[0]:filePath=','.join(file_path[0])print(file_path[0])print(filePath)self.input.setPixmap(QPixmap(filePath))  #圖片顯示

七、訓(xùn)練圖片

  • 首先,遇到了問題,我運行頁面卡住了,一直在下載某個包,經(jīng)查找,發(fā)現(xiàn)是下面這行代碼的問題。我運行提示卡在了“'Downloading torch-2.2.2-cp310-cp310-win_amd64.whl (198.6 MB)”,
  • model = torch.hub.load("./","custom",path="runs/train/exp2/weights/best.pt",trust_repo=True, source="local") 運行這行代碼時卡住了,其他代碼不會卡。
  • 已解決:下載幾個包即可:pip install torch torchvision torchaudio
  • 參考:通過pip安裝pytorch超時問題解決 - 知乎 (zhihu.com)

運行代碼:

import sys
import torch
from PySide6.QtWidgets import QMainWindow, QApplication,QFileDialog
#QFileDialog可以訪問文件資源管理器from PySide6.QtGui import QPixmap,QImage
#顯示圖片from main_window import Ui_MainWindowdef convert2QImage(img):height,width,channel=img.shapereturn QImage(img,width,height,width*channel,QImage.Format_RGB888)class MainWindow(QMainWindow,Ui_MainWindow):def __init__(self):super(MainWindow,self).__init__()self.setupUi(self)self.model=torch.hub.load("./","custom",path="runs/train/exp2/weights/best.pt",source="local")self.bind_slots()  #不要忘記調(diào)用,不寫這句話無法顯示def image_pred(self,filePath):results=self.model(filePath)image=results.render()[0]return convert2QImage(image)#檢測后的圖片def open_image(self):file_path=QFileDialog.getOpenFileNames(self,dir="./datasets/images/train",filter="*.jpg;*.png")#設(shè)置從dir里找圖片, filter分號隔離不同格式#file_path返回的是有兩個元素的數(shù)組,我們運行后,發(fā)現(xiàn)第一個元素是路徑,第二個元素是格式。我們只輸出路徑。if file_path[0]:filePath=','.join(file_path[0])qimage=self.image_pred(filePath)self.input.setPixmap(QPixmap(filePath))self.output.setPixmap(QPixmap.fromImage(qimage))def open_video(self):print("點擊顯示視頻!")def bind_slots(self):#綁定self.det_image.clicked.connect(self.open_image)self.pushButton_2.clicked.connect(self.open_video)if __name__=="__main__":app=QApplication(sys.argv)window1 = MainWindow()window1.show()app.exec()

八、訓(xùn)練視頻

仍然遇到了報錯:Traceback (most recent call last):
? File "D:\yolov5-master\yolov5-master\base_ui.py", line 57, in open_video
? ? self.input.setPixmap(QPixmap(convert2QImage(filePath)))
? File "D:\yolov5-master\yolov5-master\base_ui.py", line 13, in convert2QImage
? ? height,width,channel=imag.shape
AttributeError: 'str' object has no attribute 'shape'

但是我訓(xùn)練圖片時, height,width,channel=imag.shape這行代碼就沒有出現(xiàn)問題,于是查找包含改行代碼的函數(shù)調(diào)用的參數(shù),果然寫錯了self.input.setPixmap(QPixmap(convert2QImage(frame)))是frame不是filePath。 一定要細心!!!

import sys
import cv2
import torch
from PySide6.QtWidgets import QMainWindow, QApplication,QFileDialog
#QFileDialog可以訪問文件資源管理器from PySide6.QtGui import QPixmap,QImage
#顯示圖片from main_window import Ui_MainWindowdef convert2QImage(imag):height,width,channel=imag.shapereturn QImage(imag,width,height,width*channel,QImage.Format_RGB888)class MainWindow(QMainWindow,Ui_MainWindow):def __init__(self):super(MainWindow,self).__init__()self.setupUi(self)self.model=torch.hub.load("./","custom",path="runs/train/exp2/weights/best.pt",source="local")self.bind_slots()  #不要忘記調(diào)用,不寫這句話無法顯示def image_pred(self,filePath):results=self.model(filePath)image=results.render()[0]return convert2QImage(image)#檢測后的圖片def video_pred(self,img):results=self.model(img)image=results.render()[0]return convert2QImage(image)def open_image(self):file_path=QFileDialog.getOpenFileNames(self,dir="./datasets/images/train",filter="*.jpg;*.png")#設(shè)置從dir里找圖片, filter分號隔離不同格式#file_path返回的是有兩個元素的數(shù)組,我們運行后,發(fā)現(xiàn)第一個元素是路徑,第二個元素是格式。我們只輸出路徑。if file_path[0]:filePath=','.join(file_path[0])qimage=self.image_pred(filePath)self.input.setPixmap(QPixmap(filePath))self.output.setPixmap(QPixmap.fromImage(qimage))def open_video(self):#視頻檢測是一幀一幀地檢測,利用opencv抽幀。file_path = QFileDialog.getOpenFileNames(self, dir="./datasets", filter="*.mp4")if file_path[0]:filePath=','.join(file_path[0])print(filePath)video = cv2.VideoCapture(filePath)while True:ret,frame=video.read()if not ret:breakframe = cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)qimage=self.video_pred(frame)self.input.setPixmap(QPixmap(convert2QImage(frame)))self.output.setPixmap(QPixmap.fromImage(qimage))print("點擊顯示視頻!")def bind_slots(self):#綁定self.det_image.clicked.connect(self.open_image)self.pushButton_2.clicked.connect(self.open_video)if __name__=="__main__":app=QApplication(sys.argv)window1 = MainWindow()window1.show()app.exec()

不過我運行后很慢,并且只顯示了視頻最后一幀的檢測結(jié)果和原圖片。

問題:界面刷新不及時。

解決:加入計時器from PySide6.QtCore import QTimer
?

import sys
import cv2
import torch
from PySide6.QtWidgets import QMainWindow, QApplication,QFileDialog
#QFileDialog可以訪問文件資源管理器from PySide6.QtGui import QPixmap,QImage
#顯示圖片
from PySide6.QtCore import QTimer
#計時器from main_window import Ui_MainWindowdef convert2QImage(imag):height,width,channel=imag.shapereturn QImage(imag,width,height,width*channel,QImage.Format_RGB888)class MainWindow(QMainWindow,Ui_MainWindow):def __init__(self):super(MainWindow,self).__init__()self.setupUi(self)self.model=torch.hub.load("./","custom",path="runs/train/exp2/weights/best.pt",source="local")self.timer=QTimer()self.timer.setInterval(100) #時間間隔。默認單位毫秒ms ,可以設(shè)置的小一點兒,視頻更加絲滑。self.bind_slots()  #不要忘記調(diào)用,不寫這句話無法顯示def image_pred(self,filePath):results=self.model(filePath)image=results.render()[0]return convert2QImage(image)#檢測后的圖片def video_pred(self):ret, frame = self.video.read()if not ret:self.timer.stop()else:frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)self.input.setPixmap(QPixmap.fromImage(convert2QImage(frame)))#放在這兒而不是self.output上面,因為可能受檢測的圖像影響。在檢測之前先顯示出來。results=self.model(frame)image=results.render()[0]self.output.setPixmap(QPixmap.fromImage(convert2QImage(image)))def open_image(self):file_path=QFileDialog.getOpenFileNames(self,dir="./datasets/images/train",filter="*.jpg;*.png")#設(shè)置從dir里找圖片, filter分號隔離不同格式#file_path返回的是有兩個元素的數(shù)組,我們運行后,發(fā)現(xiàn)第一個元素是路徑,第二個元素是格式。我們只輸出路徑。if file_path[0]:filePath=','.join(file_path[0])qimage=self.image_pred(filePath)self.input.setPixmap(QPixmap(filePath))self.output.setPixmap(QPixmap.fromImage(qimage))def open_video(self):#視頻檢測是一幀一幀地檢測,利用opencv抽幀。file_path = QFileDialog.getOpenFileNames(self, dir="./datasets", filter="*.mp4")if file_path[0]:filePath=','.join(file_path[0])print(filePath)self.video = cv2.VideoCapture(filePath)self.timer.start()# while True:#     ret,frame=video.read()##     if not ret:#         break#     frame = cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)#     qimage=self.video_pred(frame)#     self.input.setPixmap(QPixmap(convert2QImage(frame)))#     self.output.setPixmap(QPixmap.fromImage(qimage))print("點擊顯示視頻!")def bind_slots(self):#綁定self.det_image.clicked.connect(self.open_image)self.pushButton_2.clicked.connect(self.open_video)self.timer.timeout.connect(self.video_pred)if __name__=="__main__":app=QApplication(sys.argv)window1 = MainWindow()window1.show()app.exec()

仍然存在問題,如果再點擊“圖片檢測”按鈕,不會停下,這是因為計時器沒有停。

解決方案:在打開圖片時,關(guān)閉計時器,def open_image(self):?self.timer.stop()

全部代碼:

import sys
import cv2
import torch
from PySide6.QtWidgets import QMainWindow, QApplication,QFileDialog
#QFileDialog可以訪問文件資源管理器from PySide6.QtGui import QPixmap,QImage
#顯示圖片
from PySide6.QtCore import QTimer
#計時器from main_window import Ui_MainWindowdef convert2QImage(imag):height,width,channel=imag.shapereturn QImage(imag,width,height,width*channel,QImage.Format_RGB888)class MainWindow(QMainWindow,Ui_MainWindow):def __init__(self):super(MainWindow,self).__init__()self.setupUi(self)self.model=torch.hub.load("./","custom",path="runs/train/exp2/weights/best.pt",source="local")self.timer=QTimer()self.timer.setInterval(1) #默認單位毫秒msself.bind_slots()  #不要忘記調(diào)用,不寫這句話無法顯示def image_pred(self,filePath):results=self.model(filePath)image=results.render()[0]return convert2QImage(image)#檢測后的圖片def video_pred(self):ret, frame = self.video.read()if not ret:self.timer.stop()else:frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)self.input.setPixmap(QPixmap.fromImage(convert2QImage(frame)))# 放在這兒而不是self.output上面,因為可能受檢測的圖像影響。在檢測之前先顯示出來。results=self.model(frame)image=results.render()[0]self.output.setPixmap(QPixmap.fromImage(convert2QImage(image)))def open_image(self):self.timer.stop()file_path=QFileDialog.getOpenFileNames(self,dir="./datasets/images/train",filter="*.jpg;*.png")#設(shè)置從dir里找圖片, filter分號隔離不同格式#file_path返回的是有兩個元素的數(shù)組,我們運行后,發(fā)現(xiàn)第一個元素是路徑,第二個元素是格式。我們只輸出路徑。if file_path[0]:filePath=','.join(file_path[0])qimage=self.video_pred(filePath)self.input.setPixmap(QPixmap(filePath))self.output.setPixmap(QPixmap.fromImage(qimage))def open_video(self):#視頻檢測是一幀一幀地檢測,利用opencv抽幀。file_path = QFileDialog.getOpenFileNames(self, dir="./datasets", filter="*.mp4")if file_path[0]:filePath=','.join(file_path[0])print(filePath)self.video = cv2.VideoCapture(filePath)self.timer.start()# while True:#     ret,frame=video.read()##     if not ret:#         break#     frame = cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)#     qimage=self.video_pred(frame)#     self.input.setPixmap(QPixmap(convert2QImage(frame)))#     self.output.setPixmap(QPixmap.fromImage(qimage))print("點擊顯示視頻!")def bind_slots(self):#綁定self.det_image.clicked.connect(self.open_image)self.pushButton_2.clicked.connect(self.open_video)self.timer.timeout.connect(self.video_pred)if __name__=="__main__":app=QApplication(sys.argv)window1 = MainWindow()window1.show()app.exec()

九、復(fù)盤

  1. 首先利用Pyside6的designer設(shè)計了UI界面。兩個button,兩個label,一條線。導(dǎo)出生成ui文件。將ui文件編譯生成成py文件,注意external tool選的是pyside6-uic.exe,不是uic.exe!!!
  2. 構(gòu)建程序,設(shè)計函數(shù):初始化;綁定按鍵與函數(shù)事件;打開圖片;打開視頻;圖片預(yù)測;視頻預(yù)測【預(yù)測部分利用了torch.hub,實際上是對每一幀的圖片進行預(yù)測,利用了計時器】

?效果如下:【我之前標注的label很草率,所以效果很差,不過邁出了從0到1的步子,我很開心了。】

pyside6可視化頁面預(yù)測


今天最大的收獲就是可以平靜地對待報錯了,之前從大一開始每次改報錯都特別煩躁,今天竟然可以平靜地坐著改幾個小時的bug。我之前特別怵頭以后做機器學習、python相關(guān)的研究,現(xiàn)在不怕了。

要相信你遇到的問題,別人也遇到過,并且他們解決了。

如果別人沒有遇到過,那正好,你會是第一個發(fā)現(xiàn)問題并解決的人,之后的人都會借鑒你的解決方案。

http://www.risenshineclean.com/news/29836.html

相關(guān)文章:

  • 大數(shù)據(jù)技術(shù)建設(shè)網(wǎng)站百度地圖人工電話
  • 王也臺詞輿情優(yōu)化公司
  • 限制個人做網(wǎng)站愛客crm
  • 會計可以做網(wǎng)站么網(wǎng)店營銷
  • wordpress站點實例百度云網(wǎng)盤資源
  • 什么企業(yè)的網(wǎng)絡(luò)營銷策略好寫網(wǎng)絡(luò)seo軟件
  • 個人主頁網(wǎng)站設(shè)計代碼新媒體營銷六種方式
  • 怎么在百度建網(wǎng)站yahoo引擎入口
  • 網(wǎng)站側(cè)欄設(shè)計合肥百度快速排名優(yōu)化
  • 泰州網(wǎng)站建設(shè)設(shè)計營銷推廣活動方案
  • 北京地區(qū)做網(wǎng)站推廣用哪家的好服裝市場調(diào)研報告范文
  • 做任務(wù)的獎金網(wǎng)站百度新站關(guān)鍵詞排名
  • 做ppt常用網(wǎng)站口碑營銷成功案例有哪些
  • 網(wǎng)站排名快速見效的方法鄒平縣seo網(wǎng)頁優(yōu)化外包
  • 自己有服務(wù)器怎么做網(wǎng)站免費學生網(wǎng)頁制作成品
  • flash 學習網(wǎng)站找一個免費域名的網(wǎng)站
  • 養(yǎng)殖企業(yè)網(wǎng)站模板新冠疫情最新情況最新消息
  • 成都的網(wǎng)站建設(shè)開發(fā)公司珠海網(wǎng)絡(luò)推廣公司
  • 免費制作單頁的網(wǎng)站鏈接搜索引擎
  • 正宗營銷型網(wǎng)站建設(shè)百度網(wǎng)站的域名地址
  • 100元網(wǎng)站建設(shè)寧波網(wǎng)絡(luò)推廣平臺
  • 如何管理個人網(wǎng)站推廣網(wǎng)站有效的方法
  • 給詐騙犯做網(wǎng)站大俠seo外鏈自動群發(fā)工具
  • 做百度企業(yè)網(wǎng)站廣州做seo公司
  • 查企業(yè)網(wǎng)站網(wǎng)絡(luò)推廣途徑
  • php外貿(mào)網(wǎng)站制作新人跑業(yè)務(wù)怎么找客戶
  • 教育公司網(wǎng)站模板百度代理公司查詢
  • 做技術(shù)開發(fā)的網(wǎng)站上海發(fā)布最新情況
  • 虛擬機wordpress建站谷歌chrome
  • 手機微信可以做網(wǎng)站嗎nba最新比賽直播