Python 如何使用cv2删除灰度图像的七个低位
我编写了一个脚本来删除七个最低有效位,只保留灰度8位图像中每个像素的MBS。为此,我用Python 如何使用cv2删除灰度图像的七个低位,python,opencv,image-processing,cv2,Python,Opencv,Image Processing,Cv2,我编写了一个脚本来删除七个最低有效位,只保留灰度8位图像中每个像素的MBS。为此,我用0b10000000屏蔽每个像素,但没有得到预期的输出 import cv2 import numpy as np imageSource = 'input.jpg' original_img = cv2.imread(imageSource,cv2.COLOR_BGR2GRAY) cv2.imshow( "original", original_img ) result = original_img &am
0b10000000
屏蔽每个像素,但没有得到预期的输出
import cv2
import numpy as np
imageSource = 'input.jpg'
original_img = cv2.imread(imageSource,cv2.COLOR_BGR2GRAY)
cv2.imshow( "original", original_img )
result = original_img & 0b10000000
cv2.imshow( "out", result )
cv2.imwrite('out.jpg',result)
cv2.waitKey(0)
cv2.destroyAllWindows()
原始图像:
我的代码的输出:
预期结果:
您需要的是二进制图像(0255),所以使用阈值函数
您需要的是二进制图像(0255),因此请使用阈值函数。因此您基本上需要以下所有值:
- 大于127
为255(128=0b1000000至255=0b11111111)
- 低于或等于127
为0李>(0=0b00000000至127=0b01111111)
&
,只需使用阈值
功能:
_, result = cv2.threshold(result, 127, 255, cv2.THRESH_BINARY)
因此,您基本上希望所有值都是:
- 大于127
为255(128=0b1000000至255=0b11111111)
- 低于或等于127
为0李>(0=0b00000000至127=0b01111111)
&
,只需使用阈值
功能:
_, result = cv2.threshold(result, 127, 255, cv2.THRESH_BINARY)
你能描述一下这个问题吗?用0b10000000屏蔽每个像素将导致有两个可能的像素值,0b10000000=128(中灰色)或0(黑色)。您显示的“正确结果”似乎有两个值,255(白色)和0(黑色)。对于imread,颜色为灰色不是有效的模式。首先用[correct mode]读取图像。请添加您用代码获得的图像。一个问题应该包括当前行为和期望的行为。嗨@klutt,这是我从代码中得到的图像:你能描述一下这个问题吗?用0b10000000屏蔽每个像素将导致有两个可能的像素值,0b10000000=128(中灰色)或0(黑色)。您显示的“正确结果”似乎有两个值,255(白色)和0(黑色)。对于imread,颜色为灰色不是有效的模式。首先用[correct mode]读取图像。请添加您用代码获得的图像。一个问题应该包括当前行为和期望的行为。嗨@klutt,下面是我从代码中得到的图像: