如何在opencv c ++中制作黑白图像?

Posted

技术标签:

【中文标题】如何在opencv c ++中制作黑白图像?【英文标题】:How to make an image black and white in opencv c++? 【发布时间】:2018-11-06 15:59:24 【问题描述】:

实际上,我是opencvnative C++ 概念的完整初学者,所以如果我的问题很简单,请原谅。基本上我想通过使用native C++ 将图像转换为Black&White,因为我试图找到教程但我找不到任何教程。 那么任何人都可以帮我学习这个概念吗?

【问题讨论】:

最好先阅读tutorials 和来自opencv 的文档,您正在寻找的功能是这个:docs.opencv.org/2.4/modules/imgproc/doc/… 和“黑白”很可能是灰度...如果不是这是一个二进制图像,您可以使用阈值实现 :) @api55 非常感谢您的时间和回答 如果您在 android 中有位图并想将其转换为黑白,为什么需要 OpenCV、JNI 和 C++? @AlexCohn 因为我想学习OpenCV的C++部分@ 【参考方案1】:
cv::Mat colorMat, grayscaleMat, binaryMat;

先转为灰度:

cv::cvtColor(colorMat, grayscaleMat, CV_BGR2GRAY);

然后对灰度图像应用一个二值阈值:

cv::threshold(grayscaleMat, binaryMat, 100, 255, cv::THRESH_BINARY);

另外,您可能需要考虑使用OpenCV4Android SDK。

【讨论】:

【参考方案2】:

您应该使用 cvtColor 函数。 假设“image”是您的原始照片,“gray_image”是您将存储新灰色照片的变量:

cvtColor( image, gray_image, CV_BGR2GRAY );

('image' & 'gray_image' 是 'Mat' 类型)

【讨论】:

非常感谢您的时间和回答,但请您详细说明 java 和 c++ 部分以及如何将位图传递给native C++ @anonymous 不确定您所说的“java 和 c++”是什么意思。您是否正在尝试制作 Android 应用程序?

以上是关于如何在opencv c ++中制作黑白图像?的主要内容,如果未能解决你的问题,请参考以下文章

你如何摆脱在opencv c ++中裁剪图像后留下的空白?

如何在c ++中使用opencv 3检测图像中的圆圈

如何在opencv中将图像转换为矩阵[重复]

在打开的cv c ++中单击鼠标右键时如何从视频中捕获图像

如何在 OpenCV 中检查两个图像是不是几乎相同?

如何在android手机中接收opencv图像