【问题标题】:Image resize do not display the correct image in opencv python图像调整大小在opencv python中不显示正确的图像
【发布时间】:2019-08-22 07:03:51
【问题描述】:

我正在使用 Opencv 4.1.0 和 python 3。

我将 480 X 640 大小的原始图像调整为 500 x 500,效果很好。

再次将 500 X 500 图像的大小调整为 25000 X 1 。我这样做是为了使用 PCA 进行面部识别。

当我将图像的大小从 25000 X 1 调整为 500 X 500 时,它没有显示 500 X 500 的图像。而是显示黑白垂直线的错误输出。

有人可以指出这里出了什么问题吗?提前致谢。

import cv2
import numpy as np
image=cv2.imread('C://Users//raghu//Documents//Faces//gt_db//unique//IMG1.jpg',0)
I1=cv2.resize(image,(500,500))
I2=cv2.resize(I1,(25000,1))
I3=cv2.resize(I2,(500,500))
cv2.imshow('480x640',image)
cv2.imshow('25000X1',I2)
cv2.imshow('500x500',I1)
cv2.imshow('2-500X500',I3)
cv2.waitKey(0)
cv2.destroyAllWindows()

调整到 I1 工作正常。期望 I3 的输出与 I1 相同。

【问题讨论】:

  • 这是意料之中的。当您调整为 1 行或列时,您会丢失信息,这些信息无法通过再次调整大小来恢复。

标签: python-3.x opencv


【解决方案1】:

通过缩小到 1 个像素,您几乎丢失了所有图像信息,因为所有 y 像素都被插值到每个 x 像素的单个数字。通过调整该像素的大小,然后将其垂直复制到 500 像素,因此我希望您会得到一个条纹图案。

你不应该调整大小,你必须重塑。这意味着将像素值从二维数组放入一维数组,这就是 PCA 算法所期望的。

例子:

# create 2d array
y = np.array(range(9)).reshape(3,3)
print(y)

[[0 1 2]
[3 4 5]
[6 7 8]]

# reshape to 1d
x = y.reshape(-1)
print(x)
print(x.shape[:2])

[0 1 2 3 4 5 6 7 8]
(9,)

reshape documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多