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

标签 opencv

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

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

  • 创建一个尺寸为 100*100 的图像(例如)- 黑色背景和 1 个 channel
  • 用白色在其中某处绘制字符 (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 上开发(如果有帮助...)。 感谢您阅读(并提供帮助!)。

最佳答案

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

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

关于OpenCV - cvPutText 正在为我的图像添加噪音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9457062/

相关文章:

java - Android findContours 上的 OpenCV 抛出异常

c++ - 在 openCV 中将 cvPoint[][] 转换为 cvPoint** 时出现段错误

python - 类型错误 : Only length-1 arrays can be converted to Python Scalars

c++ - 使用opencv进行功能检测失败并出现seg错误

python - BytesIO 流到 Numpy 数组? (摄影机)

c# - 为什么 OpenCV 加载图像的时间比 .NET 长得多?

opencv - 使用OpenCV从屏幕坐标计算世界坐标

android - 使用 Android OpenCV SDK 进行 SURF 特征提取 - 遇到一些错误

python - 如何确保使用OpenCV读取和处理所有帧

c++ - Valgrind OpenCV