发布于2021-09-28 05:26 阅读(817) 评论(0) 点赞(11) 收藏(0)
我是 openCV 的新手。我已经能够用蒙版计算图像的绿色和黄色像素。我想知道openCV中Brown的HSV范围是多少。
private void testBrownPixelCount(Mat originalMat) {
if(isMatEmpty(originalMat)){
Log.i(TAG, "Empty Original Mat at testBrownPixCoutn()");
}else{
//Perform:
Mat maskMat = Imgcodecs.imread(testFilePath);
Mat bgr = new Mat();
Imgproc.cvtColor(maskMat, bgr, Imgproc.COLOR_BGR2RGB);
Mat maskMatHsv = new Mat();
Imgproc.cvtColor(bgr, maskMatHsv , Imgproc.COLOR_RGB2HSV);
//iF NOt; use RGB2HSV:
Mat brownMat = new Mat();
Scalar min_brown = new Scalar(20,100,100);
Scalar max_brown = new Scalar(30,255,255);
Core.inRange(maskMatHsv, min_brown, max_brown, brownMat);
Log.i(TAG, "Brown Mat Non-zeros:" + Core.countNonZero(brownMat));
Bitmap bitmapMat = Bitmap.createBitmap(brownMat.cols(), brownMat.rows(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(brownMat, bitmapMat);
imgView_testView.setImageBitmap(bitmapMat);
}
结果是黑色的imageView,它甚至无法检测到黄色的。
您可以在此处查看我的答案,其中深入介绍了如何绘制/查看一系列不同的 HSV 值。
您还可以查看外部站点,这些站点可让您使用值来了解色彩空间。在 HSV 中,棕色对应较高的饱和度级别(较低的值变得更灰)和中等的值级别(低是黑色,高是白色),色调介于(大约)20 度(大约)红砖色到 40 度之间沙色。但是在 OpenCV 中,色调度除以 2 以使它们适合 255 以下,因此色调值更像是 10 到 20。
使用链接答案中的代码,我在 HSV 中生成gif
了从[10, 100, 20]
到到的一系列棕色值[20, 255, 200]
:
这似乎包含了棕色的大多数想法,但如果您想要一些更暗、更亮、更灰等的出现,您可以使用这些值。
另一种寻找良好阈值的方法是创建一个程序,让您尝试一下。例如,我在python和OpenCV中构建了一个类似于photoshop中的魔术棒选择器的工具,它可以让您定义阈值,单击一个像素,它会选择与您单击的位置连接的相似颜色的像素。此工具将打印出最高和最低颜色值,还会打印出平均颜色和标准偏差,以便更好地控制与您选择的颜色相似的阈值。您可以在此处看到gif
其中的一部分正在使用。
另一种处理值的方法是使用 OpenCV 创建轨迹栏,提供所有最小和最大阈值,并在每次更改值时使用阈值图像更新屏幕。我也在 python 和 OpenCV 中为此构建了一个工具。您可以在此处看到gif
其中的一部分正在使用。
如果您仔细阅读这两个项目的代码,您可以了解如何构建类似的程序来玩弄值,从而在不同的色彩空间中更舒适地工作。
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/292090/94024b0c32bf1aabfa12/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!