OpenCV 中用cv::IMREAD_GRAYSCALE与cv::cvtColor转灰度得到灰度图不一致问题
首先要强调的是,对于原本灰度的图像,进行默认cv::imread
读取,读到的仍是CV_8UC3
(16)类型的,而非CV_8UC1
(1)。其三个通道像素值相等!
因此要正确读入灰度图,需要加一些参数。
OpenCV中这样两种比较常见读入灰度图的方式。
1.读入时使用cv::IMREAD_GRAYSCALE
参数。
cv::Mat img = cv::imread("book.jpg",cv::IMREAD_GRAYSCALE);
2.先用默认参数读入,再用cv::cvtColor
转灰度。
cv::Mat img;
cv::Mat img0 = cv::imread("book.jpg");
cv::cvtColor(img0, img, cv::COLOR_BGR2GRAY);
受文章的启发,经过测试,发现上述两种也存在区别!
由于库的原因,以第一种方式读入可能存在偏差,以后均使用第二种,即先用默认参数读入,再用cv::cvtColor
转灰度。
OpenCV 中用cv::IMREAD_GRAYSCALE与cv::cvtColor转灰度得到灰度图不一致问题相关推荐
- OpenCV颜色空间转换函数:cv::cvtColor介绍
OpenCV颜色空间转换函数:cv::cvtColor介绍 Color Conversion Code(颜色转换代码) Enumerator COLOR_BGR2BGRA add alpha chan ...
- 【opencv】5.cv::findContours和cv::drawContours()
原文链接:https://blog.csdn.net/guduruyu/article/details/69220296 可以通过查找轮廓,找出图像中的对象.这轮廓是由一系列点组成的,根据查找轮廓时的 ...
- OpenCV-Python学习(9)—— OpenCV 通道的分离与合并(cv.split、cv.merge、cv.mixChannels、cv.inRange)
1. 知识点 BGR/HSV 彩色通道分离为单独通道: 针对不同通道使用不同阀值提取mask: 学会使用[通道分离]函数 cv.split: 学会使用[通道合并]函数 cv.merge: 学会使用[把 ...
- OpenCV序列中创建矩阵cv :: Mat的实例(附完整代码)
OpenCV序列中创建矩阵cv :: Mat的实例 OpenCV序列中创建矩阵cv :: Mat的实例 OpenCV序列中创建矩阵cv :: Mat的实例 #include "opencv2 ...
- OpenCV中的「透视变换 / 投影变换 / 单应性」—cv.warpPerspective、cv.findHomography
文章目录 引言 透视变换(projective transform) 单应性(Homography) opencv代码 仿射变换相关函数 投影变换相关的函数 鸟瞰图代码示例 小结 引言 图像的几何变换 ...
- OpenCV-Python学习(19)—— OpenCV 图像几何变换之图像缩放(cv.warpAffine、cv.resize)
1. 学习目标 学习图像的缩放矩阵: 学习 OpenCV 图像缩放函数 cv.resize 和 cv.warpAffine. 2. 图像的缩放矩阵 缩放是物体在 x 轴和 y 轴的缩放比例. fx 是 ...
- Opencv(C++)笔记--模板匹配cv::matchTemplate()和最值计算cv::minMaxLoc()
目录 1--模板匹配 1-1--OpenCV API 1-2--六种匹配方法 1-3--代码实例 2--最值计算 2-1--OpenCV API 1--模板匹配 使用模板图像与原图像进行匹配,Open ...
- OpenCV入门系列 —— cv::erode、cv::dilate 图像腐蚀和膨胀
OpenCV入门系列 -- cv::erode.cv::dilate 图像腐蚀和膨胀 前言 程序说明 输出结果 代码示例 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D)在工业领域的应用 ...
- OpenCV-Python学习(12)—— OpenCV 向图像添加文本(cv.putText、cv.getTextSize)
1. 学习目标 学会使用 cv.putText 函数向图像添加文本: 学会使用 cv.getTextSize 函数获取绘制文本占用的宽高等属性. 2. 绘制文本 cv.putText 函数说明 2.1 ...
最新文章
- 编码编成翔的十八般兵器
- 这样系统的学习分布式,他日必成大器!
- CodeForces - 336D Vasily the Bear and Beautiful Strings(dp+组合数学)
- 在控制台中操作MYSQL数据库步骤以及一些小问题
- MapReduce过程卡在reduce处的67%
- linux之解决lib***.so.*: cannot open shared object file
- 面向兑现编程(四):多态
- 【数字图像处理】(matlab入门1)
- 3D建模师是吃青春饭的吗?被高薪挖掘的建模人才,靠的是这个
- Python 批量合并 Excel工作簿
- 贪心算法——国王游戏(洛谷P1080)
- Python-Django毕业设计小斌美食网站(程序+LW)
- linux密码weak,linux中__weak关键字
- android 沉浸式_【沉浸式体验】从民俗音乐到绘画雕塑,他们玩了这么多花样!...
- EasyCVR平台通过国标GB28181接入柯达NVR显示注册失败,该如何解决?
- 图片下载_二维码生成
- 你拥有的最宝贵的财富是什么?(通向财富自由学习笔记三)
- C语言:scandir函数用法:枚举目录中指定的文件
- 一对多表关联(转载虾皮工作室)
- ldap CN, OU, DC 含义
热门文章
- 调用几个接口,快速实现社交游戏“剧本杀”
- 若依微服务版的快速构建
- BSGS算法 学习笔记
- ultimate grid_Ultimate Kubernetes资源规划指南
- openstack云计算平台
- 全球与中国半导体晶圆金属剥离平台市场深度研究分析报告
- 3D手绘和次世代建模哪个更吃香,个人发展,行业前景,高能预警!
- Java基础题37:(单选题)java中char类型的取值范围是() A.0 ... 32767 B.0 ... 65535
- psservice.exe
- 微信那些更新功能和小彩蛋