【问题标题】:How does opencv make image scale by trackbar?opencv如何通过trackbar使图像缩放?
【发布时间】:2017-11-23 03:09:32
【问题描述】:

我搜索了一下,但只找到了这个Answer 类似的东西。所以我在这里提出一个问题。我想通过轨迹栏缩放图像,我的代码如下所示:

import cv2
import numpy as np

img = cv2.imread('../data/logo.png')

cv2.namedWindow('scaleFactor')
cv2.namedWindow('image')

def nothing(x):
    print 'x--->', x

cv2.createTrackbar('scale','scaleFactor', 0 , 5, nothing)


while(1):
    rows, cols = img.shape[:2]
    cv2.imshow('image', img)
    scaleFactor = cv2.getTrackbarPos('scale','scaleFactor') or 1
    scaleFactor = scaleFactor if scaleFactor > 0 else 1
    img = cv2.resize(img, (int(rows * scaleFactor), int(cols * scaleFactor)), interpolation=cv2.INTER_LINEAR)


    k =cv2.waitKey(10)
    if k == 27:
        break
    print 'scaleFactor -->', scaleFactor

cv2.destroyAllWindows()

只是简单的给我看一个很长的错误信息:

scaleFactor --> 2
python(26953,0x7fffa5a033c0) malloc: *** mach_vm_map(size=4872572928) failed (error code=4)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug

有没有人遇到过这个错误?

【问题讨论】:

    标签: python opencv


    【解决方案1】:

    待办事项:

    把你的代码改成这样:

    rows, cols = img.shape[:2]
    while(1):
        #rows, cols = img.shape[:2]
        pass 
    

    原因:

    我发现你把rows, cols = img.shape[:2]放在了while循环中。

    这不是你打算做的:It will scale by the scalefactor in every loop(not every time you change the trackbar value).

    ...
    scaleFactor --> 2
    8589934592
    scaleFactor --> 2
    17179869184
    scaleFactor --> 2
    34359738368
    scaleFactor --> 2
    68719476736
    scaleFactor --> 2
    137438953472
    

    【讨论】:

      猜你喜欢
      • 2014-03-08
      • 1970-01-01
      • 1970-01-01
      • 2021-05-03
      • 2021-01-24
      • 2012-02-19
      • 2012-01-14
      • 1970-01-01
      相关资源
      最近更新 更多