Merhabalar, belirli bir resim dosyası üzerinde bit bazlı değişiklikler yaparak bir mesaj gizlemek istiyorum. Bunun için başlangıç olarak, LSB(son değersiz bit) algoritmasını kullanmaya çalışıyorum.
Kodun içinde değiştirdiğimde düzgünce değişiyor, ancak yeni resimi oluşturduktan sonra önceki resimle aynısı oluyor, içinde bir değişiklik olmuyor. Ufak bir örnek koyuyorum.
import cv2
import numpy as np
image = cv2.imread("SpaceX.jpg") # Resim dosyasını okuyorum
pix = image[0, 0] # İlk pikseli alıyorum
pix[0] -=1 # İlk pikselin ilk değerini değiştiriyorum
image[0, 0] = tuple(pix) # Yeni pikseli resimin ilk pikseline yerleşitiriyorum
print(image[0, 0])
cv2.imwrite("SpaceX2.jpg", image) # Yeni bir resim oluşturuyorum.
image2 = cv2.imread("SpaceX2.jpg") # Yeni resim
print(image2[0, 0]) # İlk piksel, üstte değişiklik var ancak yeni resimde yok
Bir tane piksel fotoğrafta değişiklik yapmaz ama asıl fotoğrafa göre sahte olduğunu ogrenirsiniz bazıları özel yöntemlerle fotoğrafı bitlere çevirdiğinde yazı yazmasını sağlıyor bunun kanıdini sağlamış olursunuz yani resim asıl resim ile eşit değil belki steno yapılmıştır diyebilirsiniz
Bit değişiklikliği için haklısınız, oralarda düzenleme yapılır. Benim bu problemde anlatmak istediğim cv2.imwrite fonksiyonunun istediğim gibi çalışmaması. Bu fonksiyonla değiştirilmiş bitleri kaydedemiyorum sıkıntı o. Yanlış da kullandığımı düşünmüyorum aslında ama anlayamadım işte.
```
from PIL import Image
im = Image.open('leaf.jpg')
pixelMap = im.load()
img = Image.new( im.mode, im.size)
pixelsNew = img.load()
for i in range(img.size[0]):
for j in range(img.size[1]):
if 205 in pixelMap[i,j]:
pixelMap[i,j] = (0,0,0,255)
else:
pixelsNew[i,j] = pixelMap[i,j]
img.show()
İllaha o modülle yapacağım diyorsanız ayrı ama bu şekilde yapılıyor.
LSB Steganografi yapmak için son bitleri değiştirip veriyi gizleriz, burda hemfikiriz. imwrite fonksiyonun en basit çalışma açıklaması şu; “Görüntüyü belirtilen dosyaya kaydeder.”
Şimdi ben görüntüde piksel değişiklikleri yaptım, yine aynı kodun için içinde baktım değişmiş mi diye tamam değişmiş. Ama iş yaptığım değişiklikleri kaydetmeye gelince (imwrite ile) olmuyor, bunu anlatmaya çalışıyorum. Ayrıca kullanım şekli de bu;