我正在尝试制作一个图形用户界面,帮助我裁剪人脸,并根据他们的情绪(如愤怒、悲伤、高兴等)对其进行折叠。我的代码看起来工作正常,但当我裁剪图像时,它会保存图像的其余部分。我真的不知道怎么才能做到!! 我的裁剪功能:
def on_mouse(self, event, x, y, buttons, user_param):
# Mouse callback that gets called for every mouse event (i.e. moving, clicking, etc.)
if self.done: # Nothing more to do
return
if event == cv2.EVENT_MOUSEMOVE:
# We want to be able to draw the line-in-progress, so update current mouse position
self.current = (x, y)
elif event == cv2.EVENT_LBUTTONDOWN:
# Left click means adding a point at current position to the list of points
print("Adding point #%d with position(%d,%d)" % (len(self.points), x, y))
self.points.append((x, y))
elif event == cv2.EVENT_RBUTTONDOWN:
# Right click means we're done
print("Completing polygon with %d points." % len(self.points))
self.done = True
def run(self, image):
# Let's create our working window and set a mouse callback to handle events
cv2.namedWindow(self.window_name, flags=cv2.WINDOW_AUTOSIZE)
cv2.imshow(self.window_name, image)
cv2.waitKey(1)
cv2.setMouseCallback(self.window_name, self.on_mouse)
while(not self.done):
# This is our drawing loop, we just continuously draw new images
# and show them in the named window
if (len(self.points) > 0):
# Draw all the current polygon segments
cv2.polylines(image, np.array([self.points]), False, FINAL_LINE_COLOR, 1)
# And also show what the current segment would look like
cv2.line(image, self.points[-1], self.current, WORKING_LINE_COLOR)
# Update the window
cv2.imshow(self.window_name, image)
# And wait 50ms before next iteration (this will pump window messages meanwhile)
if cv2.waitKey(50) == 27: # ESC hit
self.done = True
# User finised entering the polygon points, so let's make the final drawing
# of a filled polygon
if (len(self.points) > 0):
cv2.fillPoly(image, np.array([self.points]), FINAL_LINE_COLOR)
# And show it
cv2.imshow(self.window_name, image)
# Waiting for the user to press any key
cv2.waitKey()
cv2.destroyWindow(self.window_name)
return image
I added the whole code here if you need
编辑:当我在open函数中更改这行时:
^{pr2}$为此:
im = Image.open(fileName).convert("RGBA")
imArray = numpy.asarray(im)
real_image = imageViewer.run(imArray)
它给了我这样的错误: 已连接到pydev调试器(内部版本162.1967.10) JPEG数据损坏:数据段过早结束 回溯(最近一次呼叫): 文件“C:/Users/ASUS/Desktop/cgg/gui/template2.py”,第156行,打开 im=图像.打开(文件名).convert(“RGBA”) 文件“C:\Python27\lib\site packages\PIL\图像.py“,第1956行,开放式 前缀=fp.读取(十六) AttributeError:“QString”对象没有属性“read”
顺便说一下,我用这些代码行得到了文件名
fileName = QtGui.QFileDialog.getOpenFileName(self, "Open File",
QtCore.QDir.currentPath())
if fileName:
image = QtGui.QImage(fileName)
if image.isNull():
QtGui.QMessageBox.information(self, "Image Viewer",
"Cannot load %s." % fileName)
return
目前没有回答
相关问题 更多 >
编程相关推荐