12 python opencv pyqt4 python-2.7
我需要对图像执行大量操作.所以我使用了OpenCV.OpenCV在图像处理方面非常有效,但是提供合适的GUI并不太好.所以我决定使用PyQt绘制自定义GUI和OpenCV来处理我的图像.
我创建了一个非常简单的程序,您直接从文档中选择.我只是通过按键读取jpg
图片并以png
格式保存s
.
我的目标是s
用一个按钮替换键,按下以使用PyQt执行相同的操作.另外,我希望PyQt显示的窗口具有与OpenCV相同的行为:主要说来,该函数imshow()
显示一个适合图像大小的窗口.
这是我的OpenCV简单代码:
import numpy
import cv2
class LoadImage:
def loadImage(self):
img = cv2.imread('photo.jpg')
cv2.imshow('Image on a window',img)
k = cv2.waitKey(0)
if k == 27:
cv2.destroyAllWindows()
elif k == ord('s'):
cv2.imwrite('photopng.png',img)
cv2.destroyAllWindows()
if __name__=="__main__":
LI=LoadImage()
LI.loadImage()
Run Code Online (Sandbox Code Playgroud)
输出:
这是一个简单的PyQt代码来绘制一个简单的窗口:
import sys
from PyQt4 import QtGui
class DrawWindow:
def drawWindow(self):
app=QtGui.QApplication(sys.argv)
w=QtGui.QWidget()
#w.resize(250,250)
w.move(300,300)
w.setWindowTitle("Simple Window")
w.show()
sys.exit(app.exec_())
if __name__=="__main__":
DW=DrawWindow()
DW.drawWindow()
Run Code Online (Sandbox Code Playgroud)
如何混合使用2个代码来达到目标?
Cui*_*eng 11
基于你的帖子修改了一些代码,我没有使用Opencv来渲染图像,而是使用QPixmap来渲染它.然后使用KeyPressEvent捕获用户输入.
# -*- coding: utf-8 -*-
import numpy
import cv2
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class MyDialog(QDialog):
def __init__(self, parent=None):
super(MyDialog, self).__init__(parent)
self.cvImage = cv2.imread(r'cat.jpg')
height, width, byteValue = self.cvImage.shape
byteValue = byteValue * width
cv2.cvtColor(self.cvImage, cv2.COLOR_BGR2RGB, self.cvImage)
self.mQImage = QImage(self.cvImage, width, height, byteValue, QImage.Format_RGB888)
def paintEvent(self, QPaintEvent):
painter = QPainter()
painter.begin(self)
painter.drawImage(0, 0, self.mQImage)
painter.end()
def keyPressEvent(self, QKeyEvent):
super(MyDialog, self).keyPressEvent(QKeyEvent)
if 's' == QKeyEvent.text():
cv2.imwrite("cat2.png", self.cvImage)
else:
app.exit(1)
if __name__=="__main__":
import sys
app = QApplication(sys.argv)
w = MyDialog()
w.resize(600, 400)
w.show()
app.exec_()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21828 次 |
最近记录: |