Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用cv2删除灰度图像的七个低位_Python_Opencv_Image Processing_Cv2 - Fatal编程技术网

Python 如何使用cv2删除灰度图像的七个低位

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

我编写了一个脚本来删除七个最低有效位,只保留灰度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()
原始图像:

我的代码的输出:

预期结果:

您需要的是二进制图像(0255),所以使用阈值函数


您需要的是二进制图像(0255),因此请使用阈值函数。

因此您基本上需要以下所有值:

  • 大于127
    (128=0b1000000至255=0b11111111)
    为255
  • 低于或等于127
    (0=0b00000000至127=0b01111111)
    为0
您可以避免使用二进制和
&
,只需使用
阈值
功能:

_, result = cv2.threshold(result, 127, 255, cv2.THRESH_BINARY)

因此,您基本上希望所有值都是:

  • 大于127
    (128=0b1000000至255=0b11111111)
    为255
  • 低于或等于127
    (0=0b00000000至127=0b01111111)
    为0
您可以避免使用二进制和
&
,只需使用
阈值
功能:

_, 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,下面是我从代码中得到的图像: