2

OpenCV
我正在尝试实现文本隐写术的一个非常初学者:尝试在图像中隐藏文本消息。
我所做的是,我通过修改图像中的像素来隐藏文本消息中的每个字符。对于每个字符,我采用字符的二进制表示,并用字符的 LSB 替换像素的最后一位,并用字符的第 2 位获得另一个像素的最后一位,依此类推....对于整个消息。在将文本加密为图像后,我使用cv::imwrite.

该图像再次被另一个例程读入,并通过用于加密的反向操作对其进行解密。

但是,问题是如果我读入使用cv::imwrite. 但是,如果我将加密的矩阵 ( cv::Mat) 对象传递给解密例程而不是再次读取图像,它就会起作用。

似乎,当我将加密矩阵存储到图像中时,某些事情正在发生变化。不知道幕后发生了什么。任何帮助表示赞赏。

4

1 回答 1

3

听起来您在保存时丢失了信息。

根据imwrite函数的文档(imwrite() 文档),该函数会根据您提供的文件名的扩展名选择图像的格式。会不会是您使用的是有损文件格式,例如 JPEG ( *.jpg)?而是尝试使用.png使用无损压缩来保存数据的 a 。

编辑: 您可以对专门为 jpeg 图像设计的隐写术使用不同的方法:http: //www.sav.sk/journals/uploads/0317153109jo-mo.pdf

于 2013-11-02T11:04:17.483 回答