2013-11-02 63 views
2

OpenCV
很初學者我試圖隱藏圖像中的文本信息。
我所做的是,我通過修改圖像中的像素來隱藏文本消息中的每個字符。對於每個字符,我採用字符的二進制表示形式,並用字符的LSB替換像素的最後一位,並用字符的第二位獲取另一像素的最後一位,依此類推......爲整個消息。 將文本加密成圖像後,我使用cv::imwrite將它存儲在磁盤上。解密不在保存的圖像上工作,但在圖像的像素控制矩陣上工作

該圖像再次被另一個例程讀取,並解密它執行用於加密的反向操作。

但是,問題是解密不工作,如果我在圖像(加密圖像)中讀取,其中存儲使用cv::imwrite。 但是,如果我將加密矩陣(cv::Mat)對象傳遞給解密例程而不是再次讀取圖像,它就可以工作。

似乎,當我將加密矩陣存儲到圖像中時,某些事情正在發生變化。 不知道幕後發生了什麼。任何幫助表示讚賞。

回答

3

聽起來好像你在保存時會丟失信息。

根據imwrite函數(imwrite() documentation)的文檔,函數根據您給出的文件名的擴展名來選擇圖像的格式。難道你使用的是有損文件格式,如JPEG(*.jpg)?而是嘗試使用使用無損壓縮保存數據的.png

編輯: 您可以使用隱寫專爲JPEG圖像設計不同的方法:http://www.sav.sk/journals/uploads/0317153109jo-mo.pdf

+0

不知道這件事。我用png試了一下,現在我可以完全解密消息了。非常感謝!但是,對於jpeg圖像沒有解決方法嗎?因爲我認爲用jpeg編寫時會解壓壓縮的jpeg。 – Light

+0

jpeg是有損格式的定義,所以我恐怕沒有解決方法.... – zenpoy