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

时间:2012-02-26 20:55:22

标签: opencv

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

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

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

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

cvPutText() result

这是我正在使用的代码:

... 
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);
...

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

1 个答案:

答案 0 :(得分:1)

你没有初始化图像内容:你只是分配了内存,你看到了某种内存垃圾。

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