我想使用OpenCV2.0和Python2.6来显示调整大小的图像。我使用并采用了http://opencv.willowgarage.com/documentation/python/cookbook.html中的示例,但不幸的是,这段代码是为OpenCV2.1编写的,似乎没有在2.0上工作。这里是我的代码:
import os, glob
import cv
ulpath = "exampleshq/"
for infile in glob.glob( os.path.join(ulpath, "*.jpg") ):
im = cv.LoadImage(infile)
thumbnail = cv.CreateMat(im.rows/10, im.cols/10, cv.CV_8UC3)
cv.Resize(im, thumbnail)
cv.NamedWindow(infile)
cv.ShowImage(infile, thumbnail)
cv.WaitKey(0)
cv.DestroyWindow(name)
因为我不能用
cv.LoadImageM
我用过
cv.LoadImage
相反,这在其他应用程序中是没有问题的。但是cv.iplimage没有属性行、列或大小。有谁能给我一个提示,如何解决这个问题?谢谢。
你可以使用GetSize函数来获取这些信息, 简历获取大小(im) 将返回一个具有图像宽度和高度的元组。 您还可以使用im.depth和img.nChan获取更多信息。
为了调整图像的大小,我会使用一个稍微不同的过程,用另一个图像代替矩阵。最好尝试使用相同类型的数据:
希望这有帮助;)
朱利安
如果希望使用CV2,则需要使用
resize
函数。例如,这会将两个轴的大小调整一半:
这将调整图像的大小,使其具有100行(宽度)和50行(高度):
另一个选项是使用
scipy
模块,方法是:显然,您可以在这些函数的文档中阅读更多选项(cv2.resize,scipy.misc.imresize)。
更新:
根据SciPy documentation:
请注意,如果要按因子调整大小,则可能实际上需要^{} 。
将图像大小加倍的示例
有两种方法可以调整图像的大小。可以指定新大小:
人工操作
height, width = src.shape[:2]
dst = cv2.resize(src, (2*width, 2*height), interpolation = cv2.INTER_CUBIC)
按比例因子。
dst = cv2.resize(src, None, fx = 2, fy = 2, interpolation = cv2.INTER_CUBIC)
, 其中fx是沿水平轴的缩放因子,而fy是沿垂直轴的缩放因子。要缩小图像,通常使用INTER-CUBIC(慢)或INTER-LINEAR(快但看起来还行)来放大图像,而要放大图像,通常使用INTER-CUBIC(慢)或INTER-LINEAR(快但看起来还行)。
缩小图像以适应最大高度/宽度(保持纵横比)的示例
在cv2中使用代码
相关问题 更多 >
编程相关推荐