The last time I showed how to copy&paste the clipboard text with Excel.
Today I will show you how to deal with a copied clipboard image.
All you have to do is just like below. Not much different from the text example.
You might wannat convert QImage to Numpy array, but I couldn't find the very nice solution.
I will just save the image and cv2.imread. This might be slow, but I can accept for now.
To covert from numpy array to QImage, I referred this article.
https://stackoverflow.com/questions/18676888/how-to-configure-color-when-convert-numpy-array-to-qimage
The overall program looks like below.
Today I will show you how to deal with a copied clipboard image.
All you have to do is just like below. Not much different from the text example.
self.clip = QtGui.QApplication.clipboard() qimg = self.clip.image()
You might wannat convert QImage to Numpy array, but I couldn't find the very nice solution.
I will just save the image and cv2.imread. This might be slow, but I can accept for now.
qimg.save("tmp.png") img = cv2.imread("tmp.png")
To covert from numpy array to QImage, I referred this article.
https://stackoverflow.com/questions/18676888/how-to-configure-color-when-convert-numpy-array-to-qimage
def convert_array_to_qimg(cv_img): height, width, bytesPerComponent = cv_img.shape bytesPerLine = bytesPerComponent * width; #cv2.cvtColor(cv_img, cv2.CV_BGR2RGB) return QtGui.QImage(cv_img.data, width, height, bytesPerLine, QtGui.QImage.Format_RGB888)
The overall program looks like below.
from PyQt4 import QtGui, QtCore import sys import cv2 import numpy as np def convert_array_to_qimg(cv_img): """ this is based on https://stackoverflow.com/questions/18676888/how-to-configure-color-when-convert-numpy-array-to-qimage """ height, width, bytesPerComponent = cv_img.shape bytesPerLine = bytesPerComponent * width; #cv2.cvtColor(cv_img, cv2.CV_BGR2RGB) return QtGui.QImage(cv_img.data, width, height, bytesPerLine, QtGui.QImage.Format_RGB888) class MainWindow(QtGui.QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.image_frame = QtGui.QLabel() fname = r"sample08.png" img = cv2.imread(fname) #img = QtGui.QImage(fname) qimg = convert_array_to_qimg(img) self.image_frame.setPixmap(QtGui.QPixmap.fromImage(qimg)) self.clip = QtGui.QApplication.clipboard() self.setCentralWidget(self.image_frame) self.move(30,30) def keyPressEvent(self, e): if (e.modifiers() & QtCore.Qt.ControlModifier): #selected = self.table.selectedRanges() if e.key() == QtCore.Qt.Key_V:#past qimg = self.clip.image() self.displayImage(qimg) elif e.key() == QtCore.Qt.Key_C: #copy pass def displayImage(self, qimg): self.image_frame.setPixmap(QtGui.QPixmap.fromImage(qimg)) def main(args): app = QtGui.QApplication(sys.argv) form = MainWindow() form.show() sys.exit(app.exec_()) if __name__ == "__main__": main(sys.argv)
0 件のコメント:
コメントを投稿