【问题标题】:Display image without shape pyqt显示没有形状pyqt的图像
【发布时间】:2021-07-11 07:12:56
【问题描述】:

我正在尝试创建一个包含三个窗口的 pyqt 应用程序。

  1. 使用 QPixmap 和 opencv 将来自摄像头的视频流显示为 BGR 格式。
  2. 使用 QPixmap 和 opencv 显示蒙版图像。
  3. 使用 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 值。

我附上了以下两个函数的代码,

  1. 蒙面图片
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))

  1. 屏幕抓取
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))

【问题讨论】:

  • 将损失更改为分类交叉熵之一。 BCE 不正确。

标签: python opencv pyqt5


【解决方案1】:

你有两个选择:-

  1. loss="binary_crossentropy" 是正确的,因为您只有 1 个班级。之前因为不清楚班级的数量,所以我在那里做错了。
  2. 换个型号,其他都一样。:-
model.add(Dense(1))
model.add(Activation("sigmoid"))
  1. DEFAULT_IMAGE_SIZE= (256, 256)
  2. 在本节中
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

如果您有“无”图像,那么您必须首先将它们过滤掉,您可以只使用一个简单的pass。 5) 我不知道你为什么将模式更改为channels_first,但这会使频道在0 索引,这里应该是

model.add(BatchNormalization(axis=0))

事实上,只要不更改K.image_data_format(),那么您甚至不需要在BatchNormalization 中传递axis

【讨论】:

  • 我已经尝试了上述方法,但我仍然面临同样的问题。添加到相同的我有一个小查询。这里DEFAULT_IMAGE_SIZE = tuple((256, 256)),但我在数据集中的图像是 2448 x 3264。
  • @user13973948 你有多少课?至于图片的大小,在调整图片大小时无关紧要。
  • @user13973948 我不知道你当前的错误。
猜你喜欢
  • 2020-05-20
  • 2010-12-16
  • 2014-06-27
  • 1970-01-01
  • 2020-10-04
  • 2022-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多