How to make a binary image with python?

别来无恙 提交于 2020-01-07 03:16:30

问题


I built my image with cv2.THRESH_BINARY and the function

ret, im_thresh = cv2.threshold( gray_image, 40, 255, cv2.THRESH_BINARY )

BUT White must be 1 to Work with my program.

To help I made:

height = int(np.size(im_thresh, 0))
width = int(np.size(im_thresh, 1))

for x in range(height):
    for y in range(width):
        if im_thresh[x,y]==255:
            im_thresh[x,y] = 1

My question: Have any way to do this faster in python?


回答1:


Try using a boolean index to get and set the values of the arrays, which avoids the nested for loop.

import numpy as np
from numpy import random

# Generating an image of values between 1 and 255. 
im_thresh = random.randint(1,256, (64,64))

# Set anything less than 255 to 0. Unnecessary if cv2 does this during threshold. 
# Must go before the operation below in order not to set all values to 0. 
im_thresh[im_thresh<255] = 0

# Set all values at indices where the array equals 255 to 1.
im_thresh[im_thresh==255] = 1


来源:https://stackoverflow.com/questions/43945749/how-to-make-a-binary-image-with-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!