显示没有形状的图像pyqt
Display image without shape pyqt
我正在尝试创建一个包含三个 windows.
的 pyqt 应用程序
- 使用 QPixmap 和 opencv 将来自摄像机的视频流显示为 BGR 格式。
- 使用 QPixmap 和 opencv 显示蒙版图像。
- 使用 PIL 库、opencv 和 QPixmap 显示屏幕抓取。
下面给出了我在显示屏蔽和屏幕抓取框架时遇到的错误。
screen_grab_height, screen_grab_width, screen_grab_channel = image_grab_frame.shape ValueError: not enough values to unpack (expected 3, got 2)
当我检查frame.shape时,我发现它只有两个值,即image_height和image_width。它没有 image_channel 值。
我附上了下面两个函数的代码,
- 蒙版图片
mask = cv2.inRange(hsv, lower_hue, upper_hue)
mask1=cv2.bitwise_not(mask)
hsv_height, hsv_width, hsv_channel = hsv_image.shape
hsv_step = hsv_channel * hsv_width
mask_height, mask_width, mask_channel = mask_frame.shape
mask_step = mask_channel * mask_width
convertToQFormat = QImage(mask_frame.data, mask_frame.shape[1], mask_frame.shape[0], QImage.Format_RGB888)
pic = convertToQFormat.scaled(1280, 720, Qt.KeepAspectRatio)
self.normal_screen.setPixmap(QPixmap.fromImage(pic))
和
- 屏幕抓取
screen_grab_height, screen_grab_width, screen_grab_channel = image_grab_frame.shape
screen_grab_step = screen_grab_channel * screen_grab_width
#Display image grab#
convertToQFormat = QImage(image_grab_frame.data,image_grab_frame.shape[1], image_grab_frame.shape[0], QImage.Format_RGB888)
image_grab_pic = convertToQFormat.scaled(1280, 720, Qt.KeepAspectRatio)
self.normal_screen.setPixmap(QPixmap.fromImage(image_grab_pic))
您有 2 个选择:-
loss="binary_crossentropy"
是正确的,因为您只有 1 个 class。之前因为不清楚class的个数,弄错了
- 换个型号,其他一样。:-
model.add(Dense(1))
model.add(Activation("sigmoid"))
DEFAULT_IMAGE_SIZE= (256, 256)
- 在这个部分
try:
image = cv2.imread(image_dir)
if image is not None:
image = cv2.resize(image, DEFAULT_IMAGE_SIZE)
return img_to_array(image)
else:
pass
如果你有“None”张图片,那么你必须首先过滤掉它们,你可以只做一个简单的pass
。
5) 我不确定您为什么要将模式更改为 channels_first
,但这会使 0
处的频道成为索引,这里应该是
model.add(BatchNormalization(axis=0))
事实上,只要不更改 K.image_data_format()
,那么您甚至不需要在 BatchNormalization
中传递 axis
。
我正在尝试创建一个包含三个 windows.
的 pyqt 应用程序- 使用 QPixmap 和 opencv 将来自摄像机的视频流显示为 BGR 格式。
- 使用 QPixmap 和 opencv 显示蒙版图像。
- 使用 PIL 库、opencv 和 QPixmap 显示屏幕抓取。
下面给出了我在显示屏蔽和屏幕抓取框架时遇到的错误。
screen_grab_height, screen_grab_width, screen_grab_channel = image_grab_frame.shape ValueError: not enough values to unpack (expected 3, got 2)
当我检查frame.shape时,我发现它只有两个值,即image_height和image_width。它没有 image_channel 值。
我附上了下面两个函数的代码,
- 蒙版图片
mask = cv2.inRange(hsv, lower_hue, upper_hue)
mask1=cv2.bitwise_not(mask)
hsv_height, hsv_width, hsv_channel = hsv_image.shape
hsv_step = hsv_channel * hsv_width
mask_height, mask_width, mask_channel = mask_frame.shape
mask_step = mask_channel * mask_width
convertToQFormat = QImage(mask_frame.data, mask_frame.shape[1], mask_frame.shape[0], QImage.Format_RGB888)
pic = convertToQFormat.scaled(1280, 720, Qt.KeepAspectRatio)
self.normal_screen.setPixmap(QPixmap.fromImage(pic))
和
- 屏幕抓取
screen_grab_height, screen_grab_width, screen_grab_channel = image_grab_frame.shape
screen_grab_step = screen_grab_channel * screen_grab_width
#Display image grab#
convertToQFormat = QImage(image_grab_frame.data,image_grab_frame.shape[1], image_grab_frame.shape[0], QImage.Format_RGB888)
image_grab_pic = convertToQFormat.scaled(1280, 720, Qt.KeepAspectRatio)
self.normal_screen.setPixmap(QPixmap.fromImage(image_grab_pic))
您有 2 个选择:-
loss="binary_crossentropy"
是正确的,因为您只有 1 个 class。之前因为不清楚class的个数,弄错了- 换个型号,其他一样。:-
model.add(Dense(1))
model.add(Activation("sigmoid"))
DEFAULT_IMAGE_SIZE= (256, 256)
- 在这个部分
try:
image = cv2.imread(image_dir)
if image is not None:
image = cv2.resize(image, DEFAULT_IMAGE_SIZE)
return img_to_array(image)
else:
pass
如果你有“None”张图片,那么你必须首先过滤掉它们,你可以只做一个简单的pass
。
5) 我不确定您为什么要将模式更改为 channels_first
,但这会使 0
处的频道成为索引,这里应该是
model.add(BatchNormalization(axis=0))
事实上,只要不更改 K.image_data_format()
,那么您甚至不需要在 BatchNormalization
中传递 axis
。