我正在尝试使用遵循正态分布的opencv创建20X20图像,我知道有一个randn函数可以让我做类似的事情,但是如果打算嵌入一个,我应该怎么做呢?我要创建的图像数据中的字符串?
最佳答案
在此处查看统一的高斯随机数:http://www.design.caltech.edu/erik/Misc/Gaussian.html
如果要将隐藏的文本使用最后2个数据位(最低有效位),则需要在噪点图像中将它们设置为零。
接下来,创建3张图片:
Image noise, mask, textimg
AddNoiseTo(noise) // any kind of noise you want
SetEveryPixel(mask,unsigned char, 255-3)
CvAnd(noise,mask,noise) // to remove noise from the last 2 bits
cvPutText(textimg,yourtext,white);
CvNot(mask,mask) // invert the mask to remove data from the first 6 bits
CvAnd(textimg,mask,textimg) // filter the text image so only last 2 bits are kept
CvOr(noise,textimg,outputimg) // this will merge the two images
如果要7个数据位(为了更方便用肉眼看文本),请从掩码中减去127(二进制为7个1),而不是3(二进制为11个)。
关于c++ - 使用OpenCV C++创建遵循高斯分布的图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14275939/