如何使用cv2删除灰度图像的七个低位
How to remove seven low bits of a grayscale image using cv2
我写了一个脚本来删除七个最低有效位,只保留 gray-scale 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 & 0b10000000
cv2.imshow( "out", result )
cv2.imwrite('out.jpg',result)
cv2.waitKey(0)
cv2.destroyAllWindows()
原图:
我的代码输出:
想要的结果:
import cv2
import numpy as np
imageSource = 'input.png'
original_img = cv2.imread(imageSource, cv2.CV_LOAD_IMAGE_GRAYSCALE)
cv2.imshow("original", original_img)
result = original_img & 0b10000000
_, result = cv2.threshold(result, 1, 255, cv2.THRESH_BINARY)
cv2.imshow("out", result)
cv2.imwrite('out.jpg', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
你要的是二值图像(0, 255),所以用阈值函数
所以你基本上想要的所有值都是:
- 大于 127
(128 = 0b1000000 to 255 = 0b11111111)
为 255,
- 小于或等于 127
(0 = 0b00000000 to 127 = 0b01111111)
为 0。
您可以避免二进制 AND &
,而只需使用 threshold
函数:
_, result = cv2.threshold(result, 127, 255, cv2.THRESH_BINARY)
我写了一个脚本来删除七个最低有效位,只保留 gray-scale 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 & 0b10000000
cv2.imshow( "out", result )
cv2.imwrite('out.jpg',result)
cv2.waitKey(0)
cv2.destroyAllWindows()
原图:
我的代码输出:
想要的结果:
import cv2
import numpy as np
imageSource = 'input.png'
original_img = cv2.imread(imageSource, cv2.CV_LOAD_IMAGE_GRAYSCALE)
cv2.imshow("original", original_img)
result = original_img & 0b10000000
_, result = cv2.threshold(result, 1, 255, cv2.THRESH_BINARY)
cv2.imshow("out", result)
cv2.imwrite('out.jpg', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
你要的是二值图像(0, 255),所以用阈值函数
所以你基本上想要的所有值都是:
- 大于 127
(128 = 0b1000000 to 255 = 0b11111111)
为 255, - 小于或等于 127
(0 = 0b00000000 to 127 = 0b01111111)
为 0。
您可以避免二进制 AND &
,而只需使用 threshold
函数:
_, result = cv2.threshold(result, 127, 255, cv2.THRESH_BINARY)