Python-OpenCV——Image inverting
2023-09-27 14:27:46 时间
通常我们将读入的彩色图转化成灰度图,需要将灰度图反转得到掩码,如何正确快速的得到某个图像的反转图呢?
首先看一种看似很正确的写法,对其中每个像素进行如下处理:
img[x,y] = abs(img[x,y] - 255)
其实,灰度图中像素值是<class numpy.uint8>, 即8位无符号数,这是为了保证像素值0~255。
所以正确的写法只需 img = 255-img。
def inverte(imagem, name): imagem = (255-imagem) cv2.imwrite(name, imagem)
或者使用OpenCV中的库函数
imagem = cv2.bitwise_not(imagem)
还有一种简洁的方法,但是不那么直观。
import cv2 image = cv2.imread("img.png") image = ~image cv2.imwrite("img_inv.png",image)
为什么这是正确的呢?前面知数据类型为8位无符号数,已知 $x+(\sim x)+1=0$,所以$255-x=255+(\sim x)+1=(\sim x)+256= \sim x$.
import numpy as np x1 = np.array([25,255,10], np.uint8) #for example x2 = ~x1 print(x1) print (x2)
结果为:
[ 25 255 10]
[230 0 245]
参考链接:stack overflow中inverting image in Python with OpenCV https://stackoverflow.com/questions/19580102/inverting-image-in-python-with-opencv
相关文章
- Python 教你用OpenCV实现给照片换底色
- 显示一张图片(opencv-python入门)
- Python游戏-实现键盘控制功能
- python运行的时候报错line 192, in _run_module_as_main return _run_code(code, main_globals, None 解决方案
- linux系统安装了python中,但是为什么执行有问题
- python学习之常用模块
- OpenCV技巧 | 常用格式图片保存为透明背景图片(附Python源码)-教你轻松制作Logo
- Python-OpenCV应用实例 | 通过手势控制系统音量大小实现步骤(附源码)
- python opencv 找到圆点标定板所有点后通过距离找四个角点
- python opencv 检测圆
- 使用Python,OpenCV生成Aruco标记
- 使用Python,OpenCV和深度学习进行全面嵌套边缘检测
- 使用Python,OpenCV实现简单的场景边界/拍摄转换检测器
- 使用Python,OpenCV查找图像中的最亮点
- 第5.3节 详说Python风格的函数分配参数
- Principle of Computing (Python)学习笔记(5) BFS Searching + Zombie Apocalypse
- python 获得github代码库列表
- python图像处理(opencv入门)
- python中的闭包
- Python-OpenCV中的cv2.inpaint()函数
- Python-OpenCV——Image Blurring(Image Smoothing)
- Python是什么?Python到底能干什么呢?一篇文章让你对Python了如指掌
- 每天自学Python一小时多久可以掌握?自学Python的常见错误方式
- 总结几个简单好用的Python人脸识别算法
- 我为什么推荐学Python,但不希望大家用Python找工作?
- python操作Mysql数据库
- 从变量到封装:一文带你为机器学习打下坚实的Python基础
- python生成透时图片and 写文字
- 【Pybind11】Python调用C++接口(Ubuntu下编译OpenCV)
- 1月份Github上最热门Python开源项目!
- Python基础(十一):元组的详细讲解
- python-opencv-图像颜色映射
- python-opencv-Canny边缘检测
- python--openCV