首先要强调的是,对于原本灰度的图像,进行默认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转灰度得到灰度图不一致问题相关推荐

  1. OpenCV颜色空间转换函数:cv::cvtColor介绍

    OpenCV颜色空间转换函数:cv::cvtColor介绍 Color Conversion Code(颜色转换代码) Enumerator COLOR_BGR2BGRA add alpha chan ...

  2. 【opencv】5.cv::findContours和cv::drawContours()

    原文链接:https://blog.csdn.net/guduruyu/article/details/69220296 可以通过查找轮廓,找出图像中的对象.这轮廓是由一系列点组成的,根据查找轮廓时的 ...

  3. OpenCV-Python学习(9)—— OpenCV 通道的分离与合并(cv.split、cv.merge、cv.mixChannels、cv.inRange)

    1. 知识点 BGR/HSV 彩色通道分离为单独通道: 针对不同通道使用不同阀值提取mask: 学会使用[通道分离]函数 cv.split: 学会使用[通道合并]函数 cv.merge: 学会使用[把 ...

  4. OpenCV序列中创建矩阵cv :: Mat的实例(附完整代码)

    OpenCV序列中创建矩阵cv :: Mat的实例 OpenCV序列中创建矩阵cv :: Mat的实例 OpenCV序列中创建矩阵cv :: Mat的实例 #include "opencv2 ...

  5. OpenCV中的「透视变换 / 投影变换 / 单应性」—cv.warpPerspective、cv.findHomography

    文章目录 引言 透视变换(projective transform) 单应性(Homography) opencv代码 仿射变换相关函数 投影变换相关的函数 鸟瞰图代码示例 小结 引言 图像的几何变换 ...

  6. OpenCV-Python学习(19)—— OpenCV 图像几何变换之图像缩放(cv.warpAffine、cv.resize)

    1. 学习目标 学习图像的缩放矩阵: 学习 OpenCV 图像缩放函数 cv.resize 和 cv.warpAffine. 2. 图像的缩放矩阵 缩放是物体在 x 轴和 y 轴的缩放比例. fx 是 ...

  7. Opencv(C++)笔记--模板匹配cv::matchTemplate()和最值计算cv::minMaxLoc()

    目录 1--模板匹配 1-1--OpenCV API 1-2--六种匹配方法 1-3--代码实例 2--最值计算 2-1--OpenCV API 1--模板匹配 使用模板图像与原图像进行匹配,Open ...

  8. OpenCV入门系列 —— cv::erode、cv::dilate 图像腐蚀和膨胀

    OpenCV入门系列 -- cv::erode.cv::dilate 图像腐蚀和膨胀 前言 程序说明 输出结果 代码示例 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D)在工业领域的应用 ...

  9. OpenCV-Python学习(12)—— OpenCV 向图像添加文本(cv.putText、cv.getTextSize)

    1. 学习目标 学会使用 cv.putText 函数向图像添加文本: 学会使用 cv.getTextSize 函数获取绘制文本占用的宽高等属性. 2. 绘制文本 cv.putText 函数说明 2.1 ...

最新文章

  1. 编码编成翔的十八般兵器
  2. 这样系统的学习分布式,他日必成大器!
  3. CodeForces - 336D Vasily the Bear and Beautiful Strings(dp+组合数学)
  4. 在控制台中操作MYSQL数据库步骤以及一些小问题
  5. MapReduce过程卡在reduce处的67%
  6. linux之解决lib***.so.*: cannot open shared object file
  7. 面向兑现编程(四):多态
  8. 【数字图像处理】(matlab入门1)
  9. 3D建模师是吃青春饭的吗?被高薪挖掘的建模人才,靠的是这个
  10. Python 批量合并 Excel工作簿
  11. 贪心算法——国王游戏(洛谷P1080)
  12. Python-Django毕业设计小斌美食网站(程序+LW)
  13. linux密码weak,linux中__weak关键字
  14. android 沉浸式_【沉浸式体验】从民俗音乐到绘画雕塑,他们玩了这么多花样!...
  15. EasyCVR平台通过国标GB28181接入柯达NVR显示注册失败,该如何解决?
  16. 图片下载_二维码生成
  17. 你拥有的最宝贵的财富是什么?(通向财富自由学习笔记三)
  18. C语言:scandir函数用法:枚举目录中指定的文件
  19. 一对多表关联(转载虾皮工作室)
  20. ldap CN, OU, DC 含义

热门文章

  1. 调用几个接口,快速实现社交游戏“剧本杀”
  2. 若依微服务版的快速构建
  3. BSGS算法 学习笔记
  4. ultimate grid_Ultimate Kubernetes资源规划指南
  5. openstack云计算平台
  6. 全球与中国半导体晶圆金属剥离平台市场深度研究分析报告
  7. 3D手绘和次世代建模哪个更吃香,个人发展,行业前景,高能预警!
  8. Java基础题37:(单选题)java中char类型的取值范围是() A.0 ... 32767 B.0 ... 65535
  9. psservice.exe
  10. 微信那些更新功能和小彩蛋