From 175debdf0397295d8198ba215746e384d6534227 Mon Sep 17 00:00:00 2001 From: Harrison Edwards Date: Fri, 13 Oct 2017 08:58:43 -0400 Subject: [PATCH] added stage functionality and camera parameter logging --- LCL.ui | 36 +++++++++++-- LCL_run.py | 24 +++++++-- LCL_ui.py | 16 ++++-- __pycache__/LCL_ui.cpython-36.pyc | Bin 2921 -> 3164 bytes __pycache__/stage_controller.cpython-36.pyc | Bin 2100 -> 3251 bytes stage_controller.py | 56 +++++++++++++++----- 6 files changed, 107 insertions(+), 25 deletions(-) diff --git a/LCL.ui b/LCL.ui index 2c5e00e..237a0ca 100644 --- a/LCL.ui +++ b/LCL.ui @@ -83,7 +83,7 @@ - 160 + 240 440 161 41 @@ -93,10 +93,10 @@ - 340 + 420 420 171 - 101 + 121 @@ -154,11 +154,37 @@ Left + + + + 7 + 90 + 75 + 23 + + + + Home Stage + + + + + + 87 + 90 + 75 + 23 + + + + Get Position + + - 160 + 240 420 71 16 @@ -171,7 +197,7 @@ - 160 + 240 490 161 23 diff --git a/LCL_run.py b/LCL_run.py index 07fa366..7f03762 100644 --- a/LCL_run.py +++ b/LCL_run.py @@ -10,8 +10,8 @@ from utils import screen_shooter,now,comment from stage_controller import stage_controller class ShowVideo(QtCore.QObject): - #initiating the built in camera camera_port = 1 + cv2.CAP_DSHOW + # camera_port = 0 + cv2.CAP_DSHOW camera = cv2.VideoCapture(camera_port) VideoSignal = QtCore.pyqtSignal(QtGui.QImage) screenshot_signal = QtCore.pyqtSignal('PyQt_PyObject') @@ -19,10 +19,15 @@ class ShowVideo(QtCore.QObject): def __init__(self, parent = None): super(ShowVideo, self).__init__(parent) self.run_video = True - + @QtCore.pyqtSlot() def startVideo(self): - comment('starting video') + comment('video properties:') + self.camera.set(12,128) + self.camera.set(17,3000) + for i in range(19): + comment('property {}, value: {}'.format(i, + self.camera.get(i))) while self.run_video: ret, image = self.camera.read() self.screenshot_signal.emit(image) @@ -35,6 +40,8 @@ class ShowVideo(QtCore.QObject): QtGui.QImage.Format_RGB888) self.VideoSignal.emit(qt_image) QApplication.processEvents() + self.camera.release() + comment('ending video') class ImageViewer(QtWidgets.QWidget): @@ -58,6 +65,9 @@ class ImageViewer(QtWidgets.QWidget): def resize_dynamically(self,image): return image.scaled(window.ui.verticalLayoutWidget.size()) + def mousePressEvent(self, QMouseEvent): + print(QMouseEvent.pos()) + class main_window(QMainWindow): def __init__(self): super(main_window, self).__init__() @@ -86,6 +96,8 @@ class main_window(QMainWindow): self.ui.right_button.clicked.connect(stage.move_right) self.ui.down_button.clicked.connect(stage.move_down) self.ui.up_button.clicked.connect(stage.move_up) + self.ui.get_position_button.clicked.connect(stage.get_position) + self.ui.home_stage_button.clicked.connect(stage.home_stage) self.show() comment('finished init') @@ -93,6 +105,12 @@ class main_window(QMainWindow): comment('user comment:{}'.format(self.ui.comment_box.toPlainText())) self.ui.comment_box.clear() + def keyPressEvent(self,event): + stage.handle_keypress(event.key()) + + def closeEvent(self, event): + self.vid.run_video = False + if __name__ == '__main__': app = QApplication(sys.argv) stage = stage_controller() diff --git a/LCL_ui.py b/LCL_ui.py index 7db76e6..730a3de 100644 --- a/LCL_ui.py +++ b/LCL_ui.py @@ -33,10 +33,10 @@ class Ui_MainWindow(object): self.misc_screenshot_button.setGeometry(QtCore.QRect(10, 130, 81, 61)) self.misc_screenshot_button.setObjectName("misc_screenshot_button") self.comment_box = QtWidgets.QTextEdit(self.centralwidget) - self.comment_box.setGeometry(QtCore.QRect(160, 440, 161, 41)) + self.comment_box.setGeometry(QtCore.QRect(240, 440, 161, 41)) self.comment_box.setObjectName("comment_box") self.groupBox = QtWidgets.QGroupBox(self.centralwidget) - self.groupBox.setGeometry(QtCore.QRect(340, 420, 171, 101)) + self.groupBox.setGeometry(QtCore.QRect(420, 420, 171, 121)) self.groupBox.setObjectName("groupBox") self.down_button = QtWidgets.QPushButton(self.groupBox) self.down_button.setGeometry(QtCore.QRect(40, 60, 90, 23)) @@ -50,11 +50,17 @@ class Ui_MainWindow(object): self.left_button = QtWidgets.QPushButton(self.groupBox) self.left_button.setGeometry(QtCore.QRect(10, 40, 75, 23)) self.left_button.setObjectName("left_button") + self.home_stage_button = QtWidgets.QPushButton(self.groupBox) + self.home_stage_button.setGeometry(QtCore.QRect(7, 90, 75, 23)) + self.home_stage_button.setObjectName("home_stage_button") + self.get_position_button = QtWidgets.QPushButton(self.groupBox) + self.get_position_button.setGeometry(QtCore.QRect(87, 90, 75, 23)) + self.get_position_button.setObjectName("get_position_button") self.comment_box_label = QtWidgets.QLabel(self.centralwidget) - self.comment_box_label.setGeometry(QtCore.QRect(160, 420, 71, 16)) + self.comment_box_label.setGeometry(QtCore.QRect(240, 420, 71, 16)) self.comment_box_label.setObjectName("comment_box_label") self.user_comment_button = QtWidgets.QPushButton(self.centralwidget) - self.user_comment_button.setGeometry(QtCore.QRect(160, 490, 161, 23)) + self.user_comment_button.setGeometry(QtCore.QRect(240, 490, 161, 23)) self.user_comment_button.setObjectName("user_comment_button") MainWindow.setCentralWidget(self.centralwidget) @@ -76,6 +82,8 @@ class Ui_MainWindow(object): self.right_button.setText(_translate("MainWindow", "Right")) self.up_button.setText(_translate("MainWindow", "Up")) self.left_button.setText(_translate("MainWindow", "Left")) + self.home_stage_button.setText(_translate("MainWindow", "Home Stage")) + self.get_position_button.setText(_translate("MainWindow", "Get Position")) self.comment_box_label.setText(_translate("MainWindow", "Comment box")) self.user_comment_button.setText(_translate("MainWindow", "Add comment to log")) diff --git a/__pycache__/LCL_ui.cpython-36.pyc b/__pycache__/LCL_ui.cpython-36.pyc index f8a7b39f36fedace669b43df8a8a75454cef830b..2cdc259be8d052be6527a6b2ed4eb5ff15fcfc46 100644 GIT binary patch delta 896 zcmZXS&ubG=5Xaw3v%ASAX|1tIHfGZ#{z}&Vut_bV2PtZ;;Gt5A=w;dTEp65$TXvrq zWub?hg~Ia>P!JS7dDE-@1A=%7f_jW6?;^3_PuHq8=EPPO$GISjc!d>y!O`~o$oq1kaU@yciyv%-!tMLC^mJGHh#o1G7DI{X{ zN&2S2BGZ=Og$RaKLxc5@b=0p+4J(6fj<9!;14Uj3UxiKX>rwo=Nedf?Ue==}oMiW+ z?zNE>-vaokOgJ@eN8|=&ojOL_Z5q^cmU(p$&hxAaVGTYv&lFi@Rr$u^%3(b)`xg+P z8{v9dlbB(_yPIWoiRp9EVTDGQ>Zv C^wZY> delta 646 zcmZXQyGjF55QfjhWOv<7;yss*i7{T+OA;@rsE7)pg@vLP+DPO?aES_=h#&!rSXv0v z*a#vPf|akJFJK`EVj(sXU%|%NY>X=w=VzFi@1LLZ8YueYA&*Bcemt*_H{8iy02zaD z0|~r`uZ9S3;n9M#0KoE0Z`2uY#Yac@IL6z!!o8JA6HVI9t(-%5o0|p5vrQjWK3&L( zy2LwpjC*W^kBH8Hgr5k1nTYYOKR5hDbXx>ws)Cfk?iZk`R`v^$3uUGRDphLPFTf+b zhxb-8t3>qK5?Dlth){*-=c+Aph={mJY}T7@pZLuN^0G((e?g0r6pxhN7xaRTQYwQWdrCM?h6qkygetN!GD<-Pv{1 zxUq!fUik+cx$ryq0~`>Cy>Q?{&)j7OHh`cDE%}KYB?=vwYiqBb}dxgPxR?O+~jF=ZC$Q1|g7sR4| zKRXy76UX&UUCtI={OBK|b<#wc!axE0)`j)J3XJ3+9(uvE_#&EPL%b4j|t9S2Q41Rcz zu}xsY^V^pdBh4j2OGcd}b=ox*B)h@iFh<3C@el$pu2Ho{6{%6J6jCSK*PFR_?ZK^Y zANke0)f=9(rop5pKBkM{B@{I!{8sct`f<>eX-;=L?KH1DO}UW_x+2;M(}I4hg3YZY zEp5x)A*sFy>Pf{)tynfUJQF_TS>M+>LJ_;aFm)Ww%gd`**1yBX@%ok&JGJ$@p}ekw zCvyGv>TN%cHjWsBiJ^nW?$Md3A&4 z;35B|qAk9Hj^GWp$NL;Mhvm^X`WSHrs~Qb+&uCb}%-#qKwza#LV4+xsA}&*;kU^lqX<+op0TbQ*@R`usE2jVEv6QTd)DeAe>fQEs;=}Dhie{S16JPLR(Gh z2ly7_h=H=CD%5;)O3iWkkt1zsPXmHAZe=JK;1 z{;&n{pvD7)KTY}Wq($a7BR`2o$gW^gMhowro3_aT*#p!NzG-a8s}%kjHuvU(JJkQPBGZB(_QloKF<5CdXhC}Kbmp=RO+PDkvfhmyNsJFPk) z6h@ZF6FUn76YMZCFe0H!_eU@=F(IBWX^|ordX~TQ=X>v`chCN?^s&Ki_&)pjfp1W5hkqUZF7#y_v7_TH)Eu`@CNG>dc?wjl$RXLI(wl<{`d>FPc5P zNx(Yh6TZJJF+wOP<*rT!A{*)48OAcv2kn5Et(~f*R%t`LbJJi4-x<9WE?YmTZ;}a>S=ns9}~W5mttY=!$u6ttWJJ6mt#| zRUHID@eBsVi@1)>Z?}2OF>CHw^WIs#(tt2|1|-16ugsH~B`Y24ky=nV0Tq^N2NXpA