前言

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


一、如何反色处理

单通道图像的色值在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. iOS UIbutton 点击无反应的几种情况
  2. linux shell中文显示
  3. 国内国外虚拟主机的对比
  4. SharePoint 2007 Web Content Management 性能优化系列 前言
  5. 在SQL SERVER中实现Split功能的函数,并在存储过程中使用
  6. HDU - 4253 Two Famous Companies(二分+最小生成树)
  7. Android系统从驱动到上层服务再到应用的两种服务架构方式
  8. python指针引用的区别_C++基础:指针和引用的区别
  9. Sublime Text如何安装和卸载插件
  10. OpenCV形态学运算
  11. 百万用户规模的系统如何扩展
  12. 【Vue】五个最常用的事件修饰符
  13. Spring自学日志00(Spring配置文件头及xsd文件版本浅析)
  14. 有了这组新年元旦海报PSD模板素材,不愁晚交稿!
  15. 使用ajax局部更新Razor页面
  16. P1012 拼数(水题)
  17. 深拷贝与浅拷贝、深复制与浅复制
  18. c语言中islower是什么函数,C语言islower函数介绍、示例和实现
  19. 嵌入式Linux开发环境搭建实验
  20. opencv修改像素值

热门文章

  1. 共模(Common Mode)差模(Differential Mode)共模抑制(Common Mode Rejection)
  2. 希希的多项式(推递推式)
  3. 190327-Matlab清除指定变量之外的所有变量
  4. WinWebMail破解步骤
  5. SQL专项复习(使用GROUP BY, WITH AS)——习题篇02
  6. 2006求奇数的乘积c++
  7. ArcGIS利用draw绘图工具绘制shp文件
  8. 抓虾 — Bloglines Plus
  9. stm32呼吸灯实验
  10. vue 如何下载文件(包含txt jpg pdf word)