您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

OpenCV-Python接口,cv和cv2的性能比较

OpenCV-Python接口,cv和cv2的性能比较

cv2.imread()返回的图像是NumPy的数组对象。因此,您可以使用NumPy的函数来加快计算速度。

以下程序显示了如何通过使用ndarray对象的item(),itemset()方法加快循环版本的来源。

import time
import numpy as np
import cv2

gray = cv2.imread('lena_full.jpg',0)
height, width = gray.shape
h = np.empty((height,width,3), np.uint8)

t = time.time()
for i in xrange(height):
    for j in xrange(width):
        k = gray.item(i, j)
        if k == 127:
            h.itemset(i, j, 0, 255)
            h.itemset(i, j, 1, 255)
            h.itemset(i, j, 2, 255)
        elif k > 127:
            h.itemset(i, j, 0, 0)
            h.itemset(i, j, 1, 0)
            h.itemset(i, j, 2, 255-k)
        else:
            h.itemset(i, j, 0, k)
            h.itemset(i, j, 1, 0)
            h.itemset(i, j, 2, 0)
print time.time()-t

下面的程序演示了如何首先创建调色板,并使用NumPy的数组索引来获取结果:

t = time.time()
palette = []
for i in xrange(256):
    if i == 127:
        palette.append((255, 255, 255))
    elif i > 127:
        palette.append((0,0,255-i))
    else:
        palette.append((i, 0, 0))
palette = np.array(palette, np.uint8)

h2 = palette[gray]

print time.time() - t

print np.all(h==h2)

输出为:

0.453000068665
0.0309998989105
True

简历版本输出为:

0.468999862671

注意:轴0的长度是图像的高度,轴1的长度是图像的宽度

python 2022/1/1 18:40:16 有257人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶