OpenCV - cvPutText正在为我的图像添加噪点

Ric*_*mpo 5 opencv

我是OpenCV的新手.我几天前开始阅读Learing OpenCV,现在我想做一些测试.

我想编写一个ASCII艺术对话.我已完成图像迭代并按正方形对像素进行分组,以计算每个区域亮度,以将其与相应的字符相关联.所以现在我需要知道一个角色有多亮,以便将每个图像区域链接到一个角色.我的想法是制作另一个程序,让我获得一些角色的亮度.方法如下:

  • 创建大小为100*100(例如)的图像 - 黑色背景和1个通道
  • 在白色的某处绘制角色(cvPutText)
  • 迭代图像并计算白色像素的数量
  • 规范化结果

我认为我的程序还可以,但我得到了奇怪的结果......只是为了检查它,我正在显示每个角色的图像,并且发生了一些奇怪的事情.图像显示了我在说什么.

cvPutText()结果

这是我正在使用的代码:

... 
char c = 'a'; //or whatever
IplImage *img = cvCreateImage(cvSize(150, 150), IPL_DEPTH_8U, 1);

char buffer[7];
sprintf(buffer, "%c", c);

CvFont font;
cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 0.5, 0.5);
cvPutText(img, buffer, cvPoint(2, 15), &font, cvScalar(255));

//iteration to calculate brightness will go here

cvNamedWindow(buffer);
cvShowImage(buffer, img);
cvMoveWindow(buffer, 50*(c-first), 20);
...
Run Code Online (Sandbox Code Playgroud)

我正在开发MacOS Lion(如果它有帮助......).感谢您阅读(并帮助!).

ced*_*rou 1

您没有初始化图像内容:您刚刚分配了内存,并且看到了某种内存垃圾。

只需添加cvSet (img, cvScalarAll(0)) 将图像设置为黑色。