【发布时间】:2015-06-28 01:39:25
【问题描述】:
当我使用 opencv imread 函数读取图像时,我发现它的高度和宽度被交换为应有的值。就像我的原始图像的尺寸(610 x 406)但是在使用 opencv::imread 函数读取时,它的尺寸是 406 x 610。此外,如果我在将原始图像传递给函数之前旋转原始图像,那么也没有变化。读取的图像仍然具有原始尺寸。
请参阅示例代码和图像以进行说明: 因此,下面我提供了输入图像:一张是原始图像,第二张是旋转的(我使用 Windows 旋转命令旋转它,通过右键单击并选择“向右旋转”)。我为这两个图像得到的输出是相同的。在我看来,旋转图像实际上并没有改变它的形状。我是这么认为的,因为当我尝试将旋转后的图像也放在这里时,它只显示了它的未旋转版本(在预览中),所以我不得不对其进行截屏,然后将其粘贴在这里。
这是代码:
import cv2
import numpy as np
import sys
import os
image = cv2.imread("C:/img_8075.jpg")
print "image shape: ",image.shape
cv2.imshow("image",image)
cv2.waitKey(0)
image2 = cv2.imread("C:/img_8075_Rotated.jpg")
print "image shape: ",image2.shape
cv2.imshow("image",image2)
cv2.waitKey(0)
我得到的结果是:图像形状:(406,610,3) 图像形状:(406,610,3) 两张图片。
我无法在此处粘贴输入/输出图片,因为它说您应该拥有“10 个声誉”,而我刚刚加入。 任何的意见都将会有帮助。谢谢!
【问题讨论】:
-
旋转图像后尺寸相同?你确定你没有遗漏什么吗?
-
您是如何发现维度被交换的?
.cols应该是您的原始图像宽度,.rows应该是您的原始图像高度。如果不是这种情况,也许您的图像查看器会在显示之前在内部旋转图像?!? -
嘿 Micka,我认为您说我的图像查看器在显示之前内部旋转了图像是对的。但是,我只想将此旋转后的图像用作我的 opencv(imread 函数)的输入。我正在做一个类项目,我从文件夹中读取图像以创建其合成图像。因此,有时,文件夹中的图像方向不正确。所以,我旋转它们(使用,windows right-click->rotate right command)。但是,opencv 只读取原始图像。我该怎么办?