python-3.x - 图像调整大小无法在OpenCV Python中显示正确的图像

标签 python-3.x opencv

我正在将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像素,您几乎失去了所有图像信息,因为所有y像素都被内插为每个x像素一个数字。通过重新调整该像素的大小,然后将其垂直复制到500px,因此我希望您获得条纹图案。

您不应该调整大小,而必须调整形状。这意味着将像素值从2d数组放到1d数组,这就是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

关于python-3.x - 图像调整大小无法在OpenCV Python中显示正确的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57599844/

相关文章:

python - 如何在 Python 控制台应用程序中使用自动完成功能?

python-3.x - 使用变量定义的 f 字符串

python - 如何更改 Linux 上 Python 的默认版本以便安装和使用某些模块?

python-3.x - 更改 tempfile.NamedTemporaryFile 的字符集

Python3时间戳到unix时间(有时是毫秒)

opencv - 如何在 Ubuntu 16.04 中从 libjpeg.so.8 更新到 libjpeg.so.9?

opencv - OpenCV2.4.10 和 JavaCV 0.10 之间的区别是什么

opencv - caffe/digits : code -11 error when using python layer with cv. 调整大小

c++ - Qt Creator Ubuntu版本奇怪的编译错误

c++ - 未定义对 cv::Tracker::update 的引用