openCV图像的读写操作

这篇具有很好参考价值的文章主要介绍了openCV图像的读写操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

void QuickDemo::pixel_visit_demo(cv::Mat &image)
{
  int w = image.cols;
  int h = image.rows;
  int dim = image.channels();

  for (int row = 0; row < h; row++)
  {
	for (int col = 0; col < w; col++)
	{
	  if (dim == 1)//灰度图像
	  {
		int pv = image.at<uchar>(row,col);//像素是字节类型
		image.at<uchar>(row, col) = 255 - pv;
	  }
	  if (dim == 3)//彩色图像
	  {
		Vec3b bgr = image.at<Vec3b>(row, col);
		image.at<Vec3b>(row, col)[0] = 255 - bgr[0];
		image.at<Vec3b>(row, col)[1] = 255 - bgr[1];
		image.at<Vec3b>(row, col)[2] = 255 - bgr[2];
	  }
	}
  }

  for (int row = 0; row < h; row++)
  {
	uchar* current_row = image.ptr<uchar>(row);
	for (int col = 0; col < w; col++)
	{
	  if (dim == 1)//灰度图像
	  {
		int pv = *current_row;
		*current_row++ = 255 - *current_row;

	  }
	  if (dim == 3)//彩色图像
	  {
		*current_row++ = 255 - *current_row;
		*current_row++ = 255 - *current_row;
		*current_row++ = 255 - *current_row;
	  }
	}
  }

  imshow("像素读写", image);
}

一、数组下标

for (int row = 0; row < h; row++)
  {
	for (int col = 0; col < w; col++)
	{
	  if (dim == 1)//灰度图像
	  {
		int pv = image.at<uchar>(row,col);//像素是字节类型
		image.at<uchar>(row, col) = 255 - pv;
	  }
	  if (dim == 3)//彩色图像
	  {
		Vec3b bgr = image.at<Vec3b>(row, col);
		image.at<Vec3b>(row, col)[0] = 255 - bgr[0];
		image.at<Vec3b>(row, col)[1] = 255 - bgr[1];
		image.at<Vec3b>(row, col)[2] = 255 - bgr[2];
	  }
	}
  }
  • 如果图像是灰度图像(通道数为1),则使用.at(row, col)来访问像素值,并将像素值取反后写回图像
  • 如果图像是彩色图像(通道数为3),则使用.at(row, col)来访问像素值。将每个通道的像素值取反后写回图像

二、指针

for (int row = 0; row < h; row++)
  {
	uchar* current_row = image.ptr<uchar>(row);
	for (int col = 0; col < w; col++)
	{
	  if (dim == 1)//灰度图像
	  {
		int pv = *current_row;
		*current_row++ = 255 - *current_row;

	  }
	  if (dim == 3)//彩色图像
	  {
		*current_row++ = 255 - *current_row;
		*current_row++ = 255 - *current_row;
		*current_row++ = 255 - *current_row;
	  }
	}
  }
  • 对于灰度图像,使用指针current_row指向当前行的数据指针,然后通过*current_row++的方式逐个访问像素值,并将像素值取反后写回图像
  • 对于彩色图像,同样使用指针current_row指向当前行的数据指针,然后通过*current_row++的方式逐个访问每个通道的像素值,并将像素值取反后写回图像

推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:
零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)
https://xxetb.xet.tech/s/VsFMs文章来源地址https://www.toymoban.com/news/detail-630652.html

到了这里,关于openCV图像的读写操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机竞赛 深度学习 opencv python 公式识别(图像识别 机器视觉)

    🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的数学公式识别算法实现 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:4分 创新点:4分 🧿 更多资料, 项目分享: https://gitee.com/d

    2024年02月07日
    浏览(44)
  • 计算机竞赛 基于深度学习的人脸性别年龄识别 - 图像识别 opencv

    🔥 优质竞赛项目系列,今天要分享的是 🚩 毕业设计 人脸性别年龄识别系统 - 图像识别 opencv 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:3分 🧿 更多资料, 项目分享: https

    2024年02月10日
    浏览(58)
  • 计算机竞赛 深度学习+opencv+python实现昆虫识别 -图像识别 昆虫识别

    🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习的昆虫识别算法研究与实现 ** 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:4分 创新点:4分 🧿 更多资料, 项目分享: https://git

    2024年02月07日
    浏览(71)
  • 深度学习卫星遥感图像检测与识别 -opencv python 目标检测 计算机竞赛

    🔥 优质竞赛项目系列,今天要分享的是 🚩 **深度学习卫星遥感图像检测与识别 ** 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:5分 🧿 更多资料, 项目分享: https://gitee.com/da

    2024年02月03日
    浏览(43)
  • 计算机设计大赛 深度学习卫星遥感图像检测与识别 -opencv python 目标检测

    🔥 优质竞赛项目系列,今天要分享的是 🚩 **深度学习卫星遥感图像检测与识别 ** 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:5分 🧿 更多资料, 项目分享: https://gitee.com/da

    2024年02月22日
    浏览(53)
  • 计算机设计大赛 深度学习YOLO图像视频足球和人体检测 - python opencv

    🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习YOLO图像视频足球和人体检测 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:5分 🧿 更多资料, 项目分享: https://gitee.com/dan

    2024年02月20日
    浏览(43)
  • 计算机毕设 深度学习卫星遥感图像检测与识别 -opencv python 目标检测

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月14日
    浏览(38)
  • openCV图像的读写操作

    如果图像是灰度图像(通道数为1),则使用.at(row, col)来访问像素值,并将像素值取反后写回图像 如果图像是彩色图像(通道数为3),则使用.at(row, col)来访问像素值。将每个通道的像素值取反后写回图像 对于灰度图像,使用指针current_row指向当前行的数据指针,然后通过*

    2024年02月14日
    浏览(28)
  • 计算机视觉OpenCv学习系列:第四部分、键盘+鼠标响应操作

    键盘响应中有一个函数叫做 waitKey ,所有的获取键盘键值都是通过waitKey函数实现的。 1.键盘响应事件 cv.waitKey( [, delay] ) -- retval delay如果没有声明或者delay=0,表示一直阻塞 delay大于0,表示阻塞指定毫秒数 retval返回的对应键盘键值,注意:在不同的操作系统中可能会有差异! 典

    2024年02月09日
    浏览(36)
  • 计算机毕设 基于深度学习的图像超分辨率重建 - opencv python cnn

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包