5

当我使用 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 个声誉”,而我刚刚加入。任何的意见都将会有帮助。谢谢!

4

2 回答 2

2

通常 Mat.rows 代表图像的高度,Mat.cols 代表图像的宽度。

于 2015-04-21T11:49:21.387 回答
2

我相信你只是把约定搞混了。可以访问 OpenCV Mat 结构(行、列)。

所以一个 1920x1080 的图像将是 1080 行乘 1920 列 (1080,1920)

于 2015-04-21T04:44:24.947 回答