在OpenCV中选择图像的非矩形ROI的最有效方法是什么?

维纳吉先生

我想创建一个二进制图像蒙版,在python中仅包含一和零。感兴趣的区域(白色)是非矩形的,由4个角点定义,例如:在此处输入图片说明

在我的方法中,我首先计算ROI上下边界的线方程,然后检查每个遮罩元素是否小于边界元素。该代码可以正常工作,但是速度很慢。2000x1000的蒙版最多需要4秒钟来处理我的机器。

from matplotlib import pyplot as plt 
import cv2
import numpy as np
import time

def line_eq(line):
    """input:
            2 points of a line
       returns: 
            slope and intersection of the line
    """
    (x1, y1), (x2, y2) = line
    slope = (y2 - y1) / float((x2 - x1))
    intersect = int(slope * (-x1) + y1)

    return slope,intersect

def maskByROI(mask,ROI):
    """
        input: 
            ROI: with 4 corner points e.g. ((x0,y0),(x1,y1),(x2,y2),(x3,y3))
            mask: 
        output: 
            mask with roi set to 1, rest to 0

    """


    line1 = line_eq((ROI[0],ROI[1]))
    line2 = line_eq((ROI[2],ROI[3]))

    slope1 = line1[0] 
    intersect1 = line1[1]

    #upper line
    if slope1>0:
        for (x,y), value in np.ndenumerate(mask):
                if y > slope1*x +intersect1:
                    mask[x,y] = 0
    else:   
        for (x,y), value in np.ndenumerate(mask):
                if y < slope1*x +intersect1:
                    mask[x,y] = 0
    #lower line
    slope2 = line2[0]
    intersect2 = line2[1]
    if slope2<0:
        for (x,y), value in np.ndenumerate(mask):
                if y > slope2*x +intersect2:
                    mask[x,y] = 0
    else:   
        for (x,y), value in np.ndenumerate(mask):
                if y < slope2*x +intersect2:
                    mask[x,y] = 0

    return mask



mask = np.ones((2000,1000))

myROI = ((750,0),(900,1000),(1000,1000),(1500,0))

t1 = time.time()
mask = maskByROI(mask,myROI)
t2 = time.time()

print "execution time: ", t2-t1


plt.imshow(mask,cmap='Greys_r')
plt.show()

创建这样的蒙版的更有效方法是什么?

对于numpy,OpenCV或类似的库提供的非矩形形状,是否有任何类似的解决方案?

更多的

使用以下方法绘制蒙版fillPoly

mask = np.ones((1000, 2000))                              # (height, width)
myROI = [(750, 0), (900, 1000), (1000, 1000), (1500, 0)]  # (x, y)
cv2.fillPoly(mask, [np.array(myROI)], 0)

这大约需要1毫秒的时间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从长(且合理)稀疏向量中选择随机元素的最有效方法是什么?

来自分类Dev

在数据框中选择任何行作为标题行的最有效方法是什么?

来自分类Dev

在WPF中渲染非托管视频帧的最有效方法是什么?

来自分类Dev

在WPF中渲染非托管视频帧的最有效方法是什么?

来自分类Dev

从分段输出构造训练图像的最有效方法是什么?

来自分类Dev

根据像素的颜色生成RGB图像的布尔蒙版的最有效的方法是什么?

来自分类Dev

使用画布平铺图像的最有效方法是什么?

来自分类Dev

在 Wordpress 上使用 CSS 重叠两个图像的最有效方法是什么?

来自分类Dev

多次使用jQuery选择器的最有效/最快方法是什么?

来自分类Dev

过滤单个资源最有效的方法是什么?

来自分类Dev

使wifi工作最有效的方法是什么?

来自分类Dev

读取大文件的最有效方法是什么?

来自分类Dev

列出目录的最有效方法是什么?

来自分类Dev

遍历图片像素的最有效方法是什么

来自分类Dev

获取数字总和的最有效方法是什么?

来自分类Dev

在Haxe中循环最有效的方法是什么?

来自分类Dev

使wifi工作最有效的方法是什么?

来自分类Dev

Emacs:删除报价最有效的方法是什么?

来自分类Dev

筛选搜索的最有效方法是什么?

来自分类Dev

检测nmap扫描的最有效方法是什么?

来自分类Dev

绘制网格最有效的方法是什么?

来自分类Dev

处理 eventListener 的最有效方法是什么?

来自分类Dev

Python:打印列表的最有效方法是什么?

来自分类Dev

从具有Z数量库存的Y列表中选择X的有效方法是什么?

来自分类Dev

在javascript中获取数字的最低有效位的最有效方法是什么?

来自分类Dev

在A *搜索中选择/排序最佳节点的更有效方法是什么?

来自分类Dev

在A *搜索中选择/排序最佳节点的更有效方法是什么?

来自分类Dev

在响应式设计网站中拥有不同大小的背景图像的最有效方法是什么?

来自分类Dev

在脱机桌面应用程序上显示ZIP存档中的图像的最有效方法是什么?

Related 相关文章

  1. 1

    从长(且合理)稀疏向量中选择随机元素的最有效方法是什么?

  2. 2

    在数据框中选择任何行作为标题行的最有效方法是什么?

  3. 3

    在WPF中渲染非托管视频帧的最有效方法是什么?

  4. 4

    在WPF中渲染非托管视频帧的最有效方法是什么?

  5. 5

    从分段输出构造训练图像的最有效方法是什么?

  6. 6

    根据像素的颜色生成RGB图像的布尔蒙版的最有效的方法是什么?

  7. 7

    使用画布平铺图像的最有效方法是什么?

  8. 8

    在 Wordpress 上使用 CSS 重叠两个图像的最有效方法是什么?

  9. 9

    多次使用jQuery选择器的最有效/最快方法是什么?

  10. 10

    过滤单个资源最有效的方法是什么?

  11. 11

    使wifi工作最有效的方法是什么?

  12. 12

    读取大文件的最有效方法是什么?

  13. 13

    列出目录的最有效方法是什么?

  14. 14

    遍历图片像素的最有效方法是什么

  15. 15

    获取数字总和的最有效方法是什么?

  16. 16

    在Haxe中循环最有效的方法是什么?

  17. 17

    使wifi工作最有效的方法是什么?

  18. 18

    Emacs:删除报价最有效的方法是什么?

  19. 19

    筛选搜索的最有效方法是什么?

  20. 20

    检测nmap扫描的最有效方法是什么?

  21. 21

    绘制网格最有效的方法是什么?

  22. 22

    处理 eventListener 的最有效方法是什么?

  23. 23

    Python:打印列表的最有效方法是什么?

  24. 24

    从具有Z数量库存的Y列表中选择X的有效方法是什么?

  25. 25

    在javascript中获取数字的最低有效位的最有效方法是什么?

  26. 26

    在A *搜索中选择/排序最佳节点的更有效方法是什么?

  27. 27

    在A *搜索中选择/排序最佳节点的更有效方法是什么?

  28. 28

    在响应式设计网站中拥有不同大小的背景图像的最有效方法是什么?

  29. 29

    在脱机桌面应用程序上显示ZIP存档中的图像的最有效方法是什么?

热门标签

归档