Guest User

Untitled

a guest
Sep 20th, 2017
410
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.06 KB | None | 0 0
  1. import cv2
  2. import numpy as np
  3. import sys
  4. from PySide.QtCore import *
  5. from PySide.QtGui import *
  6. from PySide import QtGui
  7. from PySide import QtCore
  8. from math import *
  9. from CVLineDetection import CVLineDetection
  10.  
  11. imgPath01 = ['PlanSK_XS.jpg', 'dummy', 'dummy']
  12. imgPath02 = 'temp.jpg'
  13. pixelScale = 350
  14. sliderMax = 200
  15. sliderMin = 1
  16.  
  17.  
  18. class LineDetection(QtGui.QWidget):
  19.     def __init__(self):
  20.         super(LineDetection, self).__init__()
  21.  
  22.  
  23.         self.pixel = 1
  24.         self.threshold = 40
  25.         self.minLineLength = 5
  26.         self.maxLineGap = 30
  27.  
  28.         self.initUI()
  29.  
  30.  
  31. def initUI(self):
  32.     # imgPath01 = 'PlanSK_S.jpg'
  33.     # imgPath02 = 'temp.jpg'
  34.  
  35.  
  36.     self._CVLineDetection = CVLineDetection(imgPath01[0])
  37.     self._CVLineDetection.updateImage(imgPath01[0], self.pixel, self.threshold, self.minLineLength, self.maxLineGap)
  38.  
  39.     # labelSliderTxt = QtGui.QLabel('Sliders Left to Right: Pixel, Threshold, MinLineLength, maxLineGap', self)
  40.     fbButton = QtGui.QPushButton("Choose File")
  41.     fbButton.clicked.connect(self.pickFile)
  42.  
  43.     self.slider01TopTxt = QtGui.QLabel('Pixel', self)
  44.     self.slider02TopTxt = QtGui.QLabel('Threshold', self)
  45.     self.slider03TopTxt = QtGui.QLabel('MinLineLength', self)
  46.     self.slider04TopTxt = QtGui.QLabel('MaxLineGap', self)
  47.  
  48.     self.slider01TopLcd = QtGui.QLCDNumber(self)
  49.     self.slider01TopLcd.setSegmentStyle(QtGui.QLCDNumber.Flat)
  50.     self.slider01TopLcd.display(self.pixel)
  51.     self.slider02TopLcd = QtGui.QLCDNumber(self)
  52.     self.slider02TopLcd.setSegmentStyle(QtGui.QLCDNumber.Flat)
  53.     self.slider02TopLcd.display(self.threshold)
  54.     self.slider03TopLcd = QtGui.QLCDNumber(self)
  55.     self.slider03TopLcd.setSegmentStyle(QtGui.QLCDNumber.Flat)
  56.     self.slider03TopLcd.display(self.minLineLength)
  57.     self.slider04TopLcd = QtGui.QLCDNumber(self)
  58.     self.slider04TopLcd.setSegmentStyle(QtGui.QLCDNumber.Flat)
  59.     self.slider04TopLcd.display(self.maxLineGap)
  60.  
  61.     # change pixel
  62.     self.slider = QtGui.QSlider(QtCore.Qt.Vertical)
  63.     self.slider.setFocusPolicy(QtCore.Qt.StrongFocus)
  64.     self.slider.setTickPosition(QtGui.QSlider.TicksBothSides)
  65.     self.slider.setTickInterval(10)
  66.     self.slider.setSingleStep(1)
  67.     self.slider.setValue(self.pixel)
  68.     self.slider.setMaximum(sliderMax)
  69.     self.slider.setMinimum(sliderMin)
  70.  
  71.     self.slider.valueChanged.connect(self.slider01TopLcd.display)
  72.     self.slider.valueChanged.connect(self.refreshImage)
  73.  
  74.     self.slider02 = QtGui.QSlider(QtCore.Qt.Vertical)
  75.     self.slider02.setFocusPolicy(QtCore.Qt.StrongFocus)
  76.     self.slider02.setTickPosition(QtGui.QSlider.TicksBothSides)
  77.     self.slider02.setTickInterval(10)
  78.     self.slider02.setSingleStep(1)
  79.     self.slider02.setValue(self.threshold)
  80.     self.slider02.setMaximum(sliderMax)
  81.  
  82.     self.slider02.valueChanged.connect(self.slider02TopLcd.display)
  83.     self.slider02.valueChanged.connect(self.refreshImage)
  84.  
  85.     self.slider03 = QtGui.QSlider(QtCore.Qt.Vertical)
  86.     self.slider03.setFocusPolicy(QtCore.Qt.StrongFocus)
  87.     self.slider03.setTickPosition(QtGui.QSlider.TicksBothSides)
  88.     self.slider03.setTickInterval(10)
  89.     self.slider03.setSingleStep(1)
  90.     self.slider03.setValue(self.minLineLength)
  91.     self.slider03.setMaximum(sliderMax)
  92.  
  93.     self.slider03.valueChanged.connect(self.slider03TopLcd.display)
  94.     self.slider03.valueChanged.connect(self.refreshImage)
  95.  
  96.     self.slider04 = QtGui.QSlider(QtCore.Qt.Vertical)
  97.     self.slider04.setFocusPolicy(QtCore.Qt.StrongFocus)
  98.     self.slider04.setTickPosition(QtGui.QSlider.TicksBothSides)
  99.     self.slider04.setTickInterval(10)
  100.     self.slider04.setSingleStep(1)
  101.     self.slider04.setValue(self.maxLineGap)
  102.     self.slider04.setMaximum(sliderMax)
  103.  
  104.     self.slider04.valueChanged.connect(self.slider04TopLcd.display)
  105.     self.slider04.valueChanged.connect(self.refreshImage)
  106.  
  107.     vboxSlider01 = QtGui.QVBoxLayout()
  108.     vboxSlider01.addStretch(0)
  109.     vboxSlider01.addWidget(self.slider01TopTxt)
  110.     vboxSlider01.addWidget(self.slider01TopLcd)
  111.     vboxSlider01.addWidget(self.slider)
  112.  
  113.     vboxSlider02 = QtGui.QVBoxLayout()
  114.     vboxSlider02.addStretch(0)
  115.     vboxSlider02.addWidget(self.slider02TopTxt)
  116.     vboxSlider02.addWidget(self.slider02TopLcd)
  117.     vboxSlider02.addWidget(self.slider02)
  118.  
  119.     vboxSlider03 = QtGui.QVBoxLayout()
  120.     vboxSlider03.addStretch(0)
  121.     vboxSlider03.addWidget(self.slider03TopTxt)
  122.     vboxSlider03.addWidget(self.slider03TopLcd)
  123.     vboxSlider03.addWidget(self.slider03)
  124.  
  125.     vboxSlider04 = QtGui.QVBoxLayout()
  126.     vboxSlider04.addStretch(0)
  127.     vboxSlider04.addWidget(self.slider04TopTxt)
  128.     vboxSlider04.addWidget(self.slider04TopLcd)
  129.     vboxSlider04.addWidget(self.slider04)
  130.  
  131.     # first image
  132.     pixmap01 = QtGui.QPixmap(imgPath01[0])
  133.     pixmap01 = pixmap01.scaled(pixelScale, pixelScale, QtCore.Qt.KeepAspectRatio)
  134.     self.imageLable01 = QtGui.QLabel(self)
  135.     self.imageLable01.setPixmap(pixmap01)
  136.     # second image
  137.     pixmap02 = QtGui.QPixmap(imgPath02)
  138.     pixmap02 = pixmap02.scaled(pixelScale, pixelScale, QtCore.Qt.KeepAspectRatio)
  139.     self.imageLable02 = QtGui.QLabel(self)
  140.     self.imageLable02.setPixmap(pixmap02)
  141.     # add image lable to horizontal box layout
  142.     hbox01 = QtGui.QHBoxLayout()
  143.     hbox01.addStretch(1)
  144.     hbox01.addWidget(self.imageLable01)
  145.     hbox01.addWidget(self.imageLable02)
  146.     hbox01.addLayout(vboxSlider01)
  147.     hbox01.addLayout(vboxSlider02)
  148.     hbox01.addLayout(vboxSlider03)
  149.     hbox01.addLayout(vboxSlider04)
  150.  
  151.     hbox = QtGui.QHBoxLayout()
  152.     hbox.addStretch(1)
  153.     # hbox.addWidget(labelSliderTxt)
  154.     hbox.addWidget(fbButton)
  155.  
  156.     vbox = QtGui.QVBoxLayout()
  157.     vbox.addStretch(1)
  158.     vbox.addLayout(hbox01)
  159.     # add sliders
  160.  
  161.     vbox.addLayout(hbox)
  162.  
  163.     self.setLayout(vbox)
  164.  
  165.     self.setGeometry(300, 300, 300, 150)
  166.     self.setWindowTitle('OpenCV PythonSide Line Detection')
  167.     self.show()
  168.  
  169.  
  170. def pickFile(self):
  171.     global imgPath01
  172.  
  173.  
  174. imgPath01 = QtGui.QFileDialog.getOpenFileName(self, 'Open File', "~/", "Images (*.png *.jpg)")
  175. print(imgPath01)
  176.  
  177. self.refreshImage()
  178. pass
  179.  
  180.  
  181. def refreshImage(self):
  182.     global imgPath01
  183.     self.pixel = self.slider01TopLcd.intValue()
  184.     self.threshold = self.slider02TopLcd.intValue()
  185.     self.minLineLength = self.slider03TopLcd.intValue()
  186.     self.maxLineGap = self.slider04TopLcd.intValue()
  187.  
  188.     self._CVLineDetection.updateImage(imgPath01[0], self.pixel, self.threshold, self.minLineLength, self.maxLineGap)
  189.     pixmap01 = QtGui.QPixmap(imgPath01[0])
  190.     pixmap01 = pixmap01.scaled(pixelScale, pixelScale, QtCore.Qt.KeepAspectRatio)
  191.     # self.imageLable02 = QtGui.QLabel(self)
  192.     self.imageLable01.setPixmap(pixmap01)
  193.  
  194.     pixmap02 = QtGui.QPixmap(imgPath02)
  195.     pixmap02 = pixmap02.scaled(pixelScale, pixelScale, QtCore.Qt.KeepAspectRatio)
  196.     # self.imageLable02 = QtGui.QLabel(self)
  197.     self.imageLable02.setPixmap(pixmap02)
  198.  
  199.  
  200. pass
  201.  
  202.  
  203. def keyPressEvent(self, event):
  204.  
  205.  
  206.     if event.key() == Qt.Key_Escape:
  207.         self.close()
  208.  
  209.  
  210. def main():
  211.     app = QtGui.QApplication(sys.argv)
  212.     ex = LineDetection()
  213.     sys.exit(app.exec_())
  214.  
  215.  
  216. if __name__ == '__main__':
  217.     main()
Advertisement
Add Comment
Please, Sign In to add comment