From 3614ffa20ffa3fded49e1a7d5d3e35d919a3ac33 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 2 Mar 2018 22:41:19 +0530 Subject: [PATCH] Colortuner proper image loading capability added --- src/tools/colorTuner_py/colorTuner.py | 8 +- src/tools/colorTuner_py/gui/gui.py | 73 ++++++++++++------ .../colorTuner_py/resources/no_input.png | Bin 0 -> 6756 bytes 3 files changed, 57 insertions(+), 24 deletions(-) create mode 100644 src/tools/colorTuner_py/resources/no_input.png diff --git a/src/tools/colorTuner_py/colorTuner.py b/src/tools/colorTuner_py/colorTuner.py index aaa61f660..8a3f1f405 100755 --- a/src/tools/colorTuner_py/colorTuner.py +++ b/src/tools/colorTuner_py/colorTuner.py @@ -38,6 +38,10 @@ if __name__ == '__main__': cfg = config.load(sys.argv[1]) + try: + img_path=sys.argv[2] + except IndexError: + img_path=None #starting comm jdrc= comm.init(cfg, 'ColorTuner') @@ -46,7 +50,7 @@ camera = CameraFilter(cameraCli) app = QApplication(sys.argv) - frame = MainWindow() + frame = MainWindow(img_path) frame.setCamera(camera) frame.show() app.setStyleSheet(qdarkstyle.load_stylesheet_pyqt5()) @@ -55,4 +59,4 @@ t2.daemon=True t2.start() - sys.exit(app.exec_()) + sys.exit(app.exec_()) \ No newline at end of file diff --git a/src/tools/colorTuner_py/gui/gui.py b/src/tools/colorTuner_py/gui/gui.py index 450d48067..c62623bac 100644 --- a/src/tools/colorTuner_py/gui/gui.py +++ b/src/tools/colorTuner_py/gui/gui.py @@ -74,13 +74,13 @@ def closeApp(self): updGUI=pyqtSignal() - def __init__(self, parent=None): + def __init__(self, img_path=None,parent=None): super(MainWindow, self).__init__(parent) - + self.file_path=img_path aboutAction = QAction("&About", self) aboutAction.setStatusTip('About JdeRobot') aboutAction.triggered.connect(self.aboutWindow) - + self.img_path=img_path closeAction = QAction("&Quit", self) closeAction.setShortcut("Ctrl+Q") closeAction.setStatusTip('Leave The App') @@ -95,16 +95,18 @@ def __init__(self, parent=None): #self.setMaximumSize(800,600) - centralWidget = QWidget(self) + self.centralWidget = QWidget(self) mainLayout = QGridLayout() - centralWidget.setLayout(mainLayout) + self.centralWidget.setLayout(mainLayout) imagesLayout = QVBoxLayout(self) controlLayout = QVBoxLayout(self) sliders = QGridLayout(self) - - self.image = QImage(":/images/image.png").scaled(self.IMAGE_COLS_MAX, self.IMAGE_ROWS_MAX, Qt.KeepAspectRatio) + CURRENT_DIR = os.path.dirname(__file__) + + file_path = os.path.join(CURRENT_DIR, '../resources/no_input.png') + self.image = QImage(file_path).scaled(self.IMAGE_COLS_MAX, self.IMAGE_ROWS_MAX, Qt.KeepAspectRatio) self.sourceImg = MyLabel(self) self.sourceImg.setScaledContents(True) self.sourceImg.setPixmap(QPixmap.fromImage(self.image)) @@ -116,7 +118,7 @@ def __init__(self, parent=None): self.sourceImg.setFixedSize(self.IMAGE_COLS_MAX, self.IMAGE_ROWS_MAX) - self.imageF = QImage(":/images/image.png").scaled(self.IMAGE_COLS_MAX, self.IMAGE_ROWS_MAX) + self.imageF = QImage(file_path).scaled(self.IMAGE_COLS_MAX, self.IMAGE_ROWS_MAX) self.filterImg = QLabel(self) self.filterImg.setScaledContents(True) self.filterImg.setPixmap(QPixmap.fromImage(self.imageF)) @@ -148,9 +150,9 @@ def __init__(self, parent=None): zoompixGroupBox.setLayout(grid3) slidersGroupBox = QGroupBox("Filter setup") - controlWidget = ControlWidget(self) + self.controlWidget = ControlWidget(self) grid4 = QGridLayout() - grid4.addWidget(controlWidget) + grid4.addWidget(self.controlWidget) slidersGroupBox.setLayout(grid4) @@ -186,26 +188,58 @@ def __init__(self, parent=None): mainLayout.addWidget(self.pixel,1,1) mainLayout.addWidget(self.rgbVal,1,0,1,1)''' - self.setCentralWidget(centralWidget) + self.setCentralWidget(self.centralWidget) self.updGUI.connect(self.updateGUI) def updateGUI(self): + defined_img=None + if self.file_path is not None: + defined_img=QImage(self.file_path).scaled(self.IMAGE_COLS_MAX, self.IMAGE_ROWS_MAX) + img = self.camera.getOrigImage() + if defined_img is not None: + img=defined_img + self.image=img + elif defined_img is None: + if img is not None: + self.image = QImage(img.data, img.shape[1], img.shape[0], img.shape[1] * img.shape[2], QImage.Format_RGB888).scaled(self.IMAGE_COLS_MAX, self.IMAGE_ROWS_MAX) + if img is not None: - self.image = QImage(img.data, img.shape[1], img.shape[0], img.shape[1] * img.shape[2], QImage.Format_RGB888).scaled(self.IMAGE_COLS_MAX, self.IMAGE_ROWS_MAX) + self.sourceImg.setPixmap(QPixmap.fromImage(self.image)) + #Filter Image + + + filt = self.getFilterName() - img = self.camera.getFilteredImage(filt) + if (filt is not "Orig"): disc2 = self.camera.getFilter(filt).apply(self.colorSpace) imgDisc = QImage(disc2.data, disc2.shape[1], disc2.shape[0], disc2.shape[1] * disc2.shape[2], QImage.Format_RGB888).scaled(200, 200) self.colorSpaceLabel.setPixmap(QPixmap.fromImage(imgDisc)) - if img is not None: - self.imageF = QImage(img.data, img.shape[1], img.shape[0], img.shape[1] * img.shape[2], QImage.Format_RGB888).scaled(self.IMAGE_COLS_MAX, self.IMAGE_ROWS_MAX) - self.filterImg.setPixmap(QPixmap.fromImage(self.imageF)) + + img = self.camera.getOrigImage() + if defined_img is not None: + img2=cv2.imread(self.file_path) + img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2RGB) + if (filt is not "Orig"): + self.imageF=self.camera.getFilter(filt).apply(img2) + self.imageF= QImage(self.imageF.data, self.imageF.shape[1], self.imageF.shape[0], self.imageF.shape[1] * self.imageF.shape[2], QImage.Format_RGB888).scaled(self.IMAGE_COLS_MAX, self.IMAGE_ROWS_MAX) + else: + self.imageF=QImage(img2.data, img2.shape[1], img2.shape[0], img2.shape[1] * img2.shape[2], QImage.Format_RGB888).scaled(self.IMAGE_COLS_MAX, self.IMAGE_ROWS_MAX) + + elif defined_img is None: + if img is not None: + img = self.camera.getFilteredImage(filt) + self.imageF = QImage(img.data, img.shape[1], img.shape[0], img.shape[1] * img.shape[2], QImage.Format_RGB888).scaled(self.IMAGE_COLS_MAX, self.IMAGE_ROWS_MAX) + + + #img = self.camera.getFilteredImage(filt) + + self.filterImg.setPixmap(QPixmap.fromImage(self.imageF)) #print "update" @@ -249,11 +283,6 @@ def setFilterName(self,filt): self.filt = filt def closeEvent(self, event): - self.camera.stop() + self.camera.stop() event.accept() - - - - - diff --git a/src/tools/colorTuner_py/resources/no_input.png b/src/tools/colorTuner_py/resources/no_input.png new file mode 100644 index 0000000000000000000000000000000000000000..337efa743f35d4a8be5831db26733892dbf85692 GIT binary patch literal 6756 zcmd6sXH-+$m%wjAQ4vH@L6q|RBOoG8M5Kxh1R)?u3lLBQrG-v}6!I)MKAMX3_7rJS zg7hA+fOKgIB?J^ggb)IO5JCt{{I4}1=gqwLVb*-uYu$D3Id|=H_c?q2&T|`xnV86N z5dZ+h%x_$?1pqJ>06->th4~|A`}+7Vj;oqqyL|iM1br%U+n=?)XXQnW(9;XfjT3>H zl~1qbpStCu9JyST zYh=&$d3N70kH(AMJu#hDL)>Cq;uRB&Q3D3#@5dy8g-z;YVD72{hmsggY9zKS+xv0v z8?uVEYopr)U;zWKTKI-Mv`wZ{Ro(IZ{3-teM6l6oPpvVwz!89& z?bphqmopTkep0@N22^-lp7va>)QBEO;N!p^{mF^QB~Rp5yDnY@AXNW3U~EXAVn_l) zCK= zY4CuHU+eH&_Mjk3pD$AU&m0$SdpP-_Qv`cBX#J2`@0i&}EKq;mZM6m$jxL`p$G6h( zY|LORYFEb#wf@P$9sPXN(Z!0d_aUJ060pO_-EE%RoyL3;D?94wdW%0U)TWYxwUt$1 zS>t&DG<)2`>qP4IdINQ9hk6WT16%`K--A|$_G>I{F{TiczrMs@Q9DgWBG3f`(c821 zF11noROn}R0JjV1E?d^59++w?l`H>{Z;uaFa9$p_`Ml+Cg7f_^G=snGWF~;P>?&Ubb$!747+=>q@6OIgw*TMK!O+oal!F z&C|SPBF3`cjOKz^sqr^RY|*f^AQpWQCRQlG(y3rsllLCu!z6#|rd-`OmiKa&3s7m-$Lh*ZKT= zQS{CyoY(Bg-aI*-kjTtH)N1U_ZpXR$qFPBu-p+ici*hrkFCH$OQ{8vLZQ$kX-4Qgi zo!wf;@MOEo*ec(uESz0=ES^)P;@A?$T}~Z9T~vjuIHx0KALZC#Tm72=W+CPYy1X!9vFdnmV|7B^U3- z>M@k&+`_vQ1!#wM78_|3M6Ii8f^B-Tz#5z38aDU}PkEM+^2A)Y%?#HB=gyJlt{~TH zh!9Hl$k1La2cy3IS=pD~X%N_0ypfH@0red}_O~ahx*&t2b!F0j% z-Nu$TLy|mO9D&{^?-*zvtp*l2sDT-rxcmJhU(aE%8{5^%NLl^Zw~`p3zE{9w`N8|> z>H7ml%96lvepXXA>{7yR19zD)RY#uKnTGA=Xf|@vl%G z+kRuL8c3C;d(k3l2O9F+ReSN|V6&#!VBtSn2BNC zch(D$IR-mx;?X~mt@6}@=nDcKF^$^`MEo*Rwg=CeOr&Q9O??ElCg;*(c~%PQ8WyEHp$*6`W^-wdUU-Uy)dz`V5ylC0iT&8XHk zT|6Wn{jjOS1!~>HUa4%^@Rb2dq=;cYa}AC#pL|8nN;&)&$+EQpV`PUPdciI?LmRYm zSv<-HNwU+p)WGa6rzX*5~tS7u!$)6v3ykCTIJJa@dqB4o{AvpD1BEH8206S`gus z1k`8kX?w_?BokPH`*p|fEdiU0j;$dbvug^n>vBCAUN2X@z#esoR*IT{Uwgh{`B~2J zc_8B5r02I|*)Ybcp26}(W$+9tUGUYF<S~t7Djq~O=(YmGLWW)@~R7jo_Ut7S}Eh{jBSDYodM6-ienq9$|Ykk zyGXLO1JLUR8<$9?3@kPeRIA^vyGfg?CK;*415Wpih^V^JfE{|j!85WmTLimMUaW1v zrMYijAx5}!m+lL-<^Syba{Y|91kyv+RCgc`TTq)^PUYOCy% z`&(XravplC<1XM)i12!SMr;&5;VMOdh4yuTG~Mzt{i_GR5mh_2@0b2`-G`-o!-lQ# za~)n696mWc^)S!;BzT4-ihYT7kj=A;K)1M2DY98OG4EAUtBtg1T zLQ1WKwRFX>_j55@Hx3I837vnS^ai-7M=P)Dk7JZgBeG94DQO3nNSrB|^p1dM)B9Dt z59L1GUahLt2qC3o5Zx13!x%EWX)8thgAWBTd;RYpRPOysx=9!D1{D&38UbI z!iLs7;9??pW`D#~4Q<-a``!qU7JQI0hgD**no?o<$>BZT20#J#juXw?%z0Z^P0LEa zqvP%JmeX5cf883ujuxHHE_&;okD8vv0hSCaCeX zioq?~eyo@m%7w*~VKP&74`8j}6WSg1jda?9OQ`fcZ6RY<4L1f8;p;LKtKs^q5(k0% zYCu8LpZYOMp7N$**y78MXi~#fVRS0u7 zV$PCaTUT){$*jA59qA8c^+;A8aV+OTeY8s9nfmC*a=GA7qn*1eF4Gxb>q`X(;y673 zZ)l*EJ5^5X{h$Q&H{U_7yf3L$Zan+*gZMDh9es(@rz3{-J71)@`9U00;WufW6HYiM zj@{QXO6>_AUDpeNEZDmo1qJmBwZSgERW{sNRS;^cWT~_lbs_soM;ABJy*2pS8sADd zE-F0gMmq{4|wJ<4`5gDB`d`Te_?AEnx1*s>?4{XJQBKKoCFzsu9x{Eb6#@OFIE#NWSr7I1; zJ+)KdhjW_;Y5pGgO6Qsa@w)RhAgc;gk(HbrbysiS1u-neFTVqt#Lj5M&W4$(<3JTv zM@amW_7fBl6MtRx*}=WoB*%zsG)>iAy3uNJKDqP3RC;`iQh4+CqP!?$^>B)5cF-&5 zLQ40^Jd2CziTn(u6!UbSqc;;~6a0<e?wVO=8oo&OUVM_# z=;b-&J6eK8UAazh?E8=u{)nsQ?2N&!=>SRq%lCJSH01nnE_s>0pbIJ@Mes|>BfBs; z0S~2XUH<~lWF5e!dqLGsZO4}2;4*;S+6}3dusvUME|(x*)6NFg(Q9jRn_Lk!{TAm(&HaZj3Rk$AE9*Ebk4GizU^|QR z$Ib%@F2V)+oS>0|2c8+(({^!psjA6a%3IWW3P}4huI#+G(R}3) zpezMs9(mN?MqjMeK(EGfjg8B!@)F`zK7AW`)|4^W;b61`#q;$Eqr7^Kk5x{KZ$(SJS_P!|SX* z%myp}eqK$`t=tXsxqXlBPA{eLqqA*T7TQU!(`U4F@@WEakp-%d@w^?;Cn|z%nAMPP z>T_@zjmm9Fd33_z6Te8y2At|><%SMSUcOBrzVrSSYmTgV6e`@`jw8n}wybEU`W3yT zXzo&KzRj?R$ac$yc!iXQ|d{e#)S%sDlF1&-?( za#ndX^^S|Qq51doK0!w%;gwx+i(<2aZT)lQ5ZQ59?cB0sqM z86~D5>suPdHuJ1T+QBUFj`ZXiK0~lO3Lvx77Ui(2<@I-)q+3Z!kA1XfTD4WxlpDgt z3(cEQ{*wE0{aCxUd79S)kSf-a+2Hz?5$8vK&cbcJ($7Uj2JrXe9H^_A0gVfBgo*m~ zkNf>v@TK3rl|Y;yjYIuPKiq2>GAy64uqkKh`vSdDm6U7$k@fEI-O4N|g!!w;Nv)1j zqs`)o7weR?AC{c6Y2Dtog64Dww|i-{pZ09%maxe_r?c>*gs{`YQM@YtzSEQ(?TsUf zVf8wM)hIQ;I$ZwdpR#+Lg;c}G_P=`2DT@x{&KI7+zr0gc)$m58vm!saTJ+w&nDlmc zw;ILv0KWf?5bt!f!*||OSC@#DLdFs^reZBGyR<2xUc4YfESkO!w)HJ1M8@l@z4W@Xv52uyb%2-mcnnL6Xu(hZjJw=x z1?MzME7_34>|-w_Mk&~_R>jdp8wmS4MUCI#-$J5%PBp9*WNzh1@hM4=uYd=X%CEAr zKbW>aJ7S*Z^+~B`C2@mW`AncHoakJ*fk?Ggr{U^gdFXWNz|*4swL*u9_a&w0J|vsy zmkp#>+e8%ij{<3u70kCr{bOIYF+Gwy1p}$iue5B8{;B^Wob1@4L*S_?9xI4=fMXgD zO8^S_cD77k2~dSy{2SsJ9W!K~?l2fE;IX(_);i&4QZcYH zq3jRHU#*!VJ7~ClvcZob^)cjrc5saIRw>a~TAAP55L_XZ3#|~TyT*RF{nW|>*ruh5 zPjT##dolO3Lo~w^dhTfNWS-?+IGrV5&uG=|P)R9^TL70sE~L!^V;s^r!e^oHgHvtT z1=-j%M&a4>ZWa~e`L;|S36N&=K<|1OKIJg-{o!qh-uEZY((_3{slTPo7B+9hO8_PK z_AD1}%{_<2zSkMuk&15QS(M~2!{F~oW*<$#cT!m0*L9Se3(CxT;T3ejHeV_GkESUU zi@iNx^rTWDnkO8gqD(nHG5i*Bi`We5aDgmx(qRqQ$9GF7KS$#|>*E zKU~B7t7*rLJ4y>)m4u74l9|;%z3VS4p=G%2P_soiBvd--$z+_@Krcr@T<=|rbyXmH zJak~=;dcz}tOD?HM973sS16{uoy4^{x;hGA7Jrc zf#ko9_W!9_d{_Jvyx#@^{!;z_j*-A4OvlvRyiksRkpP%q Mhg>Va;_>J|0mLw@#Q*>R literal 0 HcmV?d00001