OpenCV+反色处理
前言
在标记点识别的过程中,因为某些原因,预先对编码标记进行了反色处理,因此在原图二值化后是不能直接识别编码点的,因此需要在处理时再次进行反色处理,将编码标记恢复为正常的色值,从而实现识别,记录以下。
一、如何反色处理
单通道图像的色值在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+反色处理相关推荐
- opencv 反色处理
原文链接: opencv 反色处理 上一篇: TensorFlow 常见激活函数 下一篇: TensorFlow dropout 函数 暴力循环计算,计算量比较大,秒级 import cv2 as c ...
- 【OpenCV 例程200篇】38. 图像的反色变换(图像反转)
[OpenCV 例程200篇]38. 图像的反色变换(图像反转) 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 灰度 ...
- OpenCV学习笔记:反色显示图片、鼠标事件、键盘事件和窗口滑动条操作
环境CentOS7 g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16) $ pkg-config --modversion opencv 2.4.13 参照< ...
- OpenCV 图像反色 垂直翻转图像
OpenCV 图像反转 描述不清违规检举侵权投诉| | 2011-07-14 08:48 derekpw | 浏览 2270 次 /* 程序名: invImage.c 功 能: 读入图像文件,进行图像 ...
- 如何快速对一张图片进行反色?(python+opencv)
如题,想对一张图片反色,即白色变为黑色,黑色变为白色. 实现的方法其实挺多的,这里分享两个快速的. 1.直接运算 img = 255 - img 2.调用函数 import cv2 img = cv2 ...
- 图像补运算:MatIterator_迭代器反色处理
#include <opencv2/opencv.hpp> #include <opencv2/video/background_segm.hpp>// 注意srcImage为 ...
- Qimage颜色显示反色总结
Qimage颜色格式出现只要是出现颜色反色,即红蓝色颠倒的情况,一般是opencv中图像显色为BGR,而QImage中颜色显示为RGB,所以需要将其转色 分为一下两种情况 一种可以直接将mat定义的图 ...
- css 反色_使用CSS和JavaScript检测反色
css 反色 There was something that bugged me after reading David's article on the invert filter last we ...
- python图像处理方法_python图像处理之反色实现方法
本文实例讲述了python图像处理之反色实现方法.分享给大家供大家参考.具体如下: 我们先加载一个8位灰度图像 每一个像素对应的灰度值从0-255 则只需要读取每个像素的灰度值A,再将255-A写入 ...
最新文章
- iOS UIbutton 点击无反应的几种情况
- linux shell中文显示
- 国内国外虚拟主机的对比
- SharePoint 2007 Web Content Management 性能优化系列 前言
- 在SQL SERVER中实现Split功能的函数,并在存储过程中使用
- HDU - 4253 Two Famous Companies(二分+最小生成树)
- Android系统从驱动到上层服务再到应用的两种服务架构方式
- python指针引用的区别_C++基础:指针和引用的区别
- Sublime Text如何安装和卸载插件
- OpenCV形态学运算
- 百万用户规模的系统如何扩展
- 【Vue】五个最常用的事件修饰符
- Spring自学日志00(Spring配置文件头及xsd文件版本浅析)
- 有了这组新年元旦海报PSD模板素材,不愁晚交稿!
- 使用ajax局部更新Razor页面
- P1012 拼数(水题)
- 深拷贝与浅拷贝、深复制与浅复制
- c语言中islower是什么函数,C语言islower函数介绍、示例和实现
- 嵌入式Linux开发环境搭建实验
- opencv修改像素值