前言

在标记点识别的过程中,因为某些原因,预先对编码标记进行了反色处理,因此在原图二值化后是不能直接识别编码点的,因此需要在处理时再次进行反色处理,将编码标记恢复为正常的色值,从而实现识别,记录以下。


一、如何反色处理

单通道图像的色值在0-255之间,三通道图像的RGB色值均在0-255之间

以单通道图像为例,假设某点的色值为pv,且0<=pv<=255,故反色的实质为设定该点的色值为:255-pv;

三通道图像同理,取其RGB值均255减去其原值,故:

1.C++:

void SetSingleInverse(const cv::Mat& srcImage,cv::Mat& dstImage)
{Mat gray_src;cvtColor(src, gray_src, CV_BGR2GRAY);imshow("output", gray_src);int height = gray_src.rows;int width = gray_src.cols;for (int row = 0; row < height; row++){for (int col = 0; col < width; col++){int gray = gray_src.at<uchar>(row, col);gray_src.at<uchar>(row, col) = 255 - gray;}}imshow("反色", gray_src);
}void SetMultiInverse(const cv::Mat& srcImage,cv::Mat& dstImage)
{Mat dst;dst.create(src.size(), src.type());height = src.rows;width = src.cols;int nc = src.channels();//b,g,r 三通道int b;int g;int r;for (int row = 0; row < height; row++){for (int col = 0; col < width; col++){b = src.at<Vec3b>(row, col)[0];g= src.at<Vec3b>(row, col)[1];r = src.at<Vec3b>(row, col)[2];dst.at<Vec3b>(row, col)[0] = 255 - b;dst.at<Vec3b>(row, col)[1] = 255 - g;dst.at<Vec3b>(row, col)[2] = 255 - r;}}
}

2.python

Inverse_frame_gray = frame_gray.copy()
height, width = Inverse_frame_gray.shape
for i in range(height):for j in range(width):pv = Inverse_frame_gray[i, j]Inverse_frame_gray[i][j] = 255 - pv
cv2.imshow("Inverse",Inverse_frame_gray)

:通过实际应用,以上代码效率极低,大大降低了图像的帧率,因此采用逻辑非的方法,提高图像处理效率。

二、逻辑非取反

bitwise_not方法

1.C++

void SetSingleInverse(const cv::Mat& srcImage,cv::Mat& dstImage)
{Mat gray_src;cvtColor(src, gray_src, CV_BGR2GRAY);imshow("output", gray_src);Mat Inverse_dst;bitwise_not(gray_src,Inverse_dst);imshow("Inverse", Inverse_dst);
}

2.python

gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow("img_gray",gray)
Inverse_frame_gray = cv2.bitwise_not(gray)
cv2.imshow("Inverse",Inverse_frame_gray)

经过测试,逻辑非取反方式可以大大提高取反效率,对于帧率几乎没有影响。


总结

以上,实现基于OpenCV对于图像的取反操作。

我曾踏月而来,只因你在山中 .HDarker

OpenCV+反色处理相关推荐

  1. opencv 反色处理

    原文链接: opencv 反色处理 上一篇: TensorFlow 常见激活函数 下一篇: TensorFlow dropout 函数 暴力循环计算,计算量比较大,秒级 import cv2 as c ...

  2. 【OpenCV 例程200篇】38. 图像的反色变换(图像反转)

    [OpenCV 例程200篇]38. 图像的反色变换(图像反转) 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 灰度 ...

  3. OpenCV学习笔记:反色显示图片、鼠标事件、键盘事件和窗口滑动条操作

    环境CentOS7 g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16) $ pkg-config --modversion opencv 2.4.13 参照< ...

  4. OpenCV 图像反色 垂直翻转图像

    OpenCV 图像反转 描述不清违规检举侵权投诉| | 2011-07-14 08:48 derekpw | 浏览 2270 次 /* 程序名: invImage.c 功 能: 读入图像文件,进行图像 ...

  5. 如何快速对一张图片进行反色?(python+opencv)

    如题,想对一张图片反色,即白色变为黑色,黑色变为白色. 实现的方法其实挺多的,这里分享两个快速的. 1.直接运算 img = 255 - img 2.调用函数 import cv2 img = cv2 ...

  6. 图像补运算:MatIterator_迭代器反色处理

    #include <opencv2/opencv.hpp> #include <opencv2/video/background_segm.hpp>// 注意srcImage为 ...

  7. Qimage颜色显示反色总结

    Qimage颜色格式出现只要是出现颜色反色,即红蓝色颠倒的情况,一般是opencv中图像显色为BGR,而QImage中颜色显示为RGB,所以需要将其转色 分为一下两种情况 一种可以直接将mat定义的图 ...

  8. css 反色_使用CSS和JavaScript检测反色

    css 反色 There was something that bugged me after reading David's article on the invert filter last we ...

  9. python图像处理方法_python图像处理之反色实现方法

    本文实例讲述了python图像处理之反色实现方法.分享给大家供大家参考.具体如下: 我们先加载一个8位灰度图像 每一个像素对应的灰度值从0-255 则只需要读取每个像素的灰度值A,再将255-A写入 ...

最新文章

  1. 基于pyBoard的进一步的一些测试实验,MC3008
  2. VS NuGet使用
  3. javascript 鼠标事件总结
  4. boost::sort模块实现展开排序示例
  5. oracle 日志丢失,Oracle联机日志文件丢失解决方法一例
  6. 何小鹏谈财务自由:痛苦彷徨,7块钱的快餐只能偷偷吃
  7. SQL获取上个月的第一天最后一天datetime
  8. 吸电流、拉电流、灌电流、上拉电阻、下拉电阻、高阻态等基础知识普及
  9. SQL Server-【知识与实战I】条件查询、比较运算符查询、模糊查询、枚举查询、范围查询、空值查询、多重条件查询
  10. Java中字符串的拼接和转义
  11. 用Matlab解MTPA的dq轴电流的方程
  12. addr2line的使用
  13. docx文档怎么排列图片_腾讯、石墨、金山在线文档简单对比
  14. 深度优先和广度优先算法
  15. 攻防世界PWN新手练习区WP
  16. Flyme patchrom项目笔记
  17. 1273:【例9.17】货币系统
  18. 移动端可移动小图标(vue版)
  19. 【简单图形解释】刚体上任意一点速度与刚体角速度的关系
  20. 智能扫地机器人好用吗

热门文章

  1. 网站风格变黑白的方法,用css或javascript方法将网站改为灰色
  2. LLC同步控制or异步控制
  3. mysql 中字段存放表情符号,Incorrect string value: ‘\xF0\x9F\x8C\xBB‘ for column
  4. Java中的参数传递,到底是值传递还是引用传递?
  5. 【JLOI2014】松鼠的新家
  6. DBA职业生涯规划:八步打造高级DBA专家
  7. php入门教程ppt,PHP与MySQL入门学习指南.ppt
  8. java eclipse sbt_无法安装sbt-eclipse插件
  9. 电影主题HTM5网页设计作业成品——爱影评在线电影(10页面)使用dreamweaver制作采web前端设计与开发期末作品 用DIV CSS进行布局
  10. Android EditText 格式化手机号 xxx xxxx xxxx