【发布时间】:2012-07-09 14:16:03
【问题描述】:
我们的计算机一次获取数百张图像,我们需要尽可能快地旋转和调整它们的大小。 旋转 90、180 或 270 度。
目前我们正在使用命令行工具GraphicsMagick 来旋转图像。旋转图像 (5760*3840 ~ 22MP) 大约需要 4 到 7 秒。
以下python code 可悲地给了我们相同的结果
import cv
img = cv.LoadImage("image.jpg")
timg = cv.CreateImage((img.height,img.width), img.depth, img.channels) # transposed image
# rotate counter-clockwise
cv.Transpose(img,timg)
cv.Flip(timg,timg,flipMode=0)
cv.SaveImage("rotated_counter_clockwise.jpg", timg)
有没有更快的方法来利用显卡的力量来旋转图像?想到 OpenCL 和 OpenGL,但我们想知道性能提升是否会很明显。
我们使用的硬件相当有限,因为设备应该尽可能小。
- Intel Atom D525 (1,8 Ghz)
- Mobility Radeon HD 5430 Series
- 4 GB 内存
- SSD 垂直度 3
该软件是带有官方(闭源)radeon 驱动程序的 debian 6。
【问题讨论】:
-
在阅读这个问题时,我在想:这个操作的每个部分花费了多少时间? JPEG 编码与实际旋转操作有多少等待?有多少等待来自磁盘 IO?这些问题的答案可能会对您的优化产生影响。
-
只使用 jpeg tran,作为一个很好的副作用,不会影响质量。
-
您能否为您粘贴的代码的每一部分(加载后、转置后、翻转后、保存后)提供时间?
标签: opengl graphics opencv opencl image-rotation