获取边框像素:
掩模操作是获取图像边界像素的多种方法之一。代码如下:a= cv2.imread('cal1.jpg')
bw = 20 //width of border required
mask = np.ones(a.shape[:2], dtype = "uint8")
cv2.rectangle(mask, (bw,bw),(a.shape[1]-bw,a.shape[0]-bw), 0, -1)
output = cv2.bitwise_and(a, a, mask = mask)
cv2.imshow('out', output)
cv2.waitKey(5000)
在得到与输入图像具有相同维数的1数组后,我使用cv2.rectangle函数绘制一个由零组成的矩形。第一个参数是要绘制的图像,第二个参数是开始(x,y)点,第三个参数是结束(x,y)点。第四个参数是颜色,'-1'表示绘制的矩形的厚度(-1填充矩形)。您可以找到函数here的文档。在
现在我们有了掩码,您可以使用'cv2.bitwise_and'(documentation)函数对像素执行和操作。基本上会发生的是,在遮罩中有'1'个像素的像素,会保留它们的像素值。遮罩中为“0”个像素且具有“0”像素的像素将变为0。这样,您将得到如下输出:
。在
输入图像是:
你现在有边界像素了!在
使用LSB飞机来存储你的信息不是一个好主意。你想想就明白了。一个简单的有损压缩会影响大部分隐藏的数据。将图像保存为JPEG格式会导致信息丢失或严重影响信息。如果您还想尝试LSB,可以研究位平面切片。通过位平面切片,基本上可以获得图像的位平面(从MSB到LSB)。(图片来自researchgate.net)在
我在Matlab中做过,但不太确定用python做。在Matlab中,
函数“bitget(image,1)”返回图像的LSB。我在使用pythonhere进行位平面切片时发现了一个问题。虽然没有答案,但您可能需要查看发布的代码。在