Python OpenCV对图像像素进行操作

目录
  • 遍历并修改图像像素值
  • 图像的加减乘除运算

遍历并修改图像像素值

在使用opencv处理图像时,有时需要对图像的每个像素点进行处理,比如取反、修改值等操作,就需要通过h和w遍历像素。
依然以下图为例:

具体代码:

import cv2 as cv
import numpy as np

def image_pixel(image_path: str):
    img = cv.imread(image_path, cv.IMREAD_COLOR)
    cv.imshow('input', img)

    h, w, c = img.shape
    # 遍历像素点,修改图像b,g,r值
    for row in range(h):
        for col in range(w):
            b, g, r = img[row, col]
            # img[row, col] = (255 - b, 255 - g, 255 - r)
            # img[row, col] = (255 - b, g, r)
            # img[row, col] = (255 - b, g, 255 - r)
            img[row, col] = (0, g, r)

    cv.imshow('result', img)
    cv.imwrite('images/result.jpg', img)
    cv.waitKey(0)
    cv.destroyAllWindows()

结果展示:

图像的加减乘除运算

图像的加减运算可以调整图片的亮度和对比度。图像的加减运算可以调整图像的亮度;图像的乘除运算可以调整图像的对比度。

具体代码:

# -*-coding:utf-8-*-
"""
File Name: image_pixel_operation.py
Program IDE: PyCharm
Create File By Author: Hong
"""
import cv2 as cv
import numpy as np

def math_pixel(image_path: str):
    img = cv.imread(image_path, cv.IMREAD_COLOR)
    cv.imshow('input', img)
    h, w, c = img.shape

    blank = np.zeros_like(img)
    blank[:, :] = (2, 2, 2)  # 所有像素值设为50

    # 改变图像亮度
    mask = cv.add(img, blank)  # 图像加操作。图像形状一样就可以相加,像素值类型不一样不影响, 人为的增加了亮度
    mask = cv.subtract(img, blank)  # 图像减操作。人为的降低了亮度

    # 改变图像对比度
    # result = cv.divide(img, blank)  # 图像除操作
    result = cv.multiply(img, blank)  # 图像乘操作

    cv.imshow('blank', blank)
    cv.imshow('mask', mask)
    cv.imshow('contrast', result)
    cv.waitKey(0)
    cv.destroyAllWindows()

效果展示:

到此这篇关于Python OpenCV对图像像素进行操作的文章就介绍到这了,更多相关Python OpenCV图像像素操作内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python3.6+opencv3.4实现鼠标交互查看图片像素

    在利用opencv进行图片处理时,经常需要查看图片关心区域或位置的像素数值,苦于没有应手的小软件,我用python3.6+opencv3.4简单编制一个小工具,供大家使用. 流程 1.建立标准的鼠标交互函数,当鼠标在图像上移动时,即时显示鼠标位置的像素数值(opencv像素为BGR格式). 2.建立图像窗口,绑定鼠标回调函数. 3.按下'q'键,退出. 4.仅需15行代码,就是这么简单. 代码 # -*- coding: utf-8 -*- import cv2 img= cv2.imread(

  • Python+OpenCV图片局部区域像素值处理详解

    背景故事:我需要对一张图片做一些处理,是在图像像素级别上的数值处理,以此来反映图片中特定区域的图像特征,网上查了很多,大多关于opencv的应用教程帖子基本是停留在打开图片,提取像素重新写入图片啊之类的基本操作,我是要取图片中的特定区域再提取它的像素值,作为一个初学者开始接触opencv简直一脸懵,慢慢摸索着知道了opencv的一些函数是可以实现的像SetImageROI()函数设置ROI区域,即感兴趣区域,就很好用啊,总之最后是实现了自己想要的功能.现在看个程序确实是有点挫,也有好多多余的没必

  • Python OpenCV处理图像之图像像素点操作

    本文实例为大家分享了Python OpenCV图像像素点操作的具体代码,供大家参考,具体内容如下 0x01. 像素 有两种直接操作图片像素点的方法: 第一种办法就是将一张图片看成一个多维的list,例如对于一张图片im,想要操作第四行第四列的像素点就直接 im[3,3] 就可以获取到这个点的RGB值. 第二种就是使用 OpenCV 提供的 Get1D. Get2D 等函数. 推荐使用第一种办法吧,毕竟简单. 0x02. 获取行和列像素 有一下四个函数: cv.GetCol(im, 0): 返回第

  • python+opencv像素的加减和加权操作的实现

    本文介绍了python+opencv像素的加减和加权操作的实现,分享给大家. # 目标: # 1.在图像上进行算术操作,如加减以及按位操作 # 2.将会学会使用cv2.add(),cv2.addWeights() # 参考网站:https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_core/py_image_arithmetics/py_image_arithmetics.html#image-arithmetics import numpy

  • Python OpenCV对图像像素进行操作

    目录 遍历并修改图像像素值 图像的加减乘除运算 遍历并修改图像像素值 在使用opencv处理图像时,有时需要对图像的每个像素点进行处理,比如取反.修改值等操作,就需要通过h和w遍历像素.依然以下图为例: 具体代码: import cv2 as cv import numpy as np def image_pixel(image_path: str): img = cv.imread(image_path, cv.IMREAD_COLOR) cv.imshow('input', img) h,

  • 浅谈python opencv对图像颜色通道进行加减操作溢出

    由于opencv读入图片数据类型是uint8类型,直接加减会导致数据溢出现象 (1)用Numpy操作 可以先将图片数据类型转换成int类型进行计算, data=np.array(image,dtype='int') 经过处理后(如:遍历,将大于255的置为255,小于0的置为0) 再将图片还原成uint8类型 data=np.array(image,dtype='uint8') 注意: (1)如果直接相加,那么 当像素值 > 255时,结果为对256取模的结果,例如:(240+66) % 256

  • Python OpenCV 针对图像细节的不同操作技巧

    本系列专栏写作将采用首创的问答式写作形式,快速让你学习到 OpenCV 的初级.中级.高级知识. 6. 在 Python OpenCV 针对图像细节的不同操作 本篇博客的目标将为你解释一幅图像的拆解,包括图像像素的说明,图像属性信息的获取与修改, 图像目标区域 ROI 相关内容,以及图像通道的知识(包括拆分通道和合并通道) 这些内容在知识结构上与 numpy 库十分紧密,如果从学习的角度出发,建议你储备一下 numpy 相关知识. 读取修改图像的像素值 在之前的博客中,我们已经学到了如何读取一幅

  • Python OpenCV对图像进行模糊处理详解流程

    其实我们平时在深度学习中所说的卷积操作,在 opencv 中也可以进行,或者说是类似操作.那么它是什么操作呢?它就是图像的模糊(滤波)处理. 均值滤波 使用 opencv 中的cv2.blur(src, ksize)函数.其参数说明是: src: 原图像 ksize: 模糊核大小 原理:它只取内核区域下所有像素的平均值并替换中心元素.3x3 标准化的盒式过滤器如下所示: 特征:核中区域贡献率相同. 作用:对于椒盐噪声的滤除效果比较好. # -*-coding:utf-8-*- ""&q

  • 深入学习Python+Opencv常用四种图像处理操作

    目录 改变色彩空间: cv.cvtColor() 改变图像大小:cv.resize() 二维卷积操作 常用模糊 opencv图像处理(深度学习中常用的) 改变色彩空间: cv.cvtColor() cv.cvtColor(img, flag) img:原图像 flag:要改变的类型 常用的flag有:cv.COLOR_BGR2GRAY (BGR->GRAY).cv.COLOR_BGR2HSV img = cv.imread(r'E:\0_postgraduate\test.jpg') gray

  • Python+OpenCV实现基本的图像处理操作

    目录 模块的安装 图片的各种操作 读取图像 展示图像 图片保存 图片的各种属性 图像的基本操作 今天小编来和大家分享一下Python在图像处理当中的具体应用,那既然是图像处理,那必然要提到opencv模块了,该模块支持与计算机视觉和机器学习相关的众多算法,并且应用领域正在日益扩展,大致有以下几种领域 物体识别:通过视觉以及内部存储来进行物体的判断 图像分割 人脸识别 汽车安全驾驶 人机交互 等等 当然这次小编并不打算将这么高深的内容,今天就从最基本的opencv模块在图像的基本操作上说起 模块的

  • python opencv实现图像边缘检测

    本文利用python opencv进行图像的边缘检测,一般要经过如下几个步骤: 1.去噪 如cv2.GaussianBlur()等函数: 2.计算图像梯度 图像梯度表达的是各个像素点之间,像素值大小的变化幅度大小,变化较大,则可以认为是出于边缘位置,最多可简化为如下形式: 3.非极大值抑制 在获得梯度的方向和大小之后,应该对整幅图像做一个扫描,去除那些非边界上的点.对每一个像素进行检查,看这个点的梯度是不是周围具有相同梯度方向的点中最大的.如下图所示: 4.滞后阈值 现在要确定那些边界才是真正的

  • Python Opencv实现图像轮廓识别功能

    本文实例为大家分享了python opencv识别图像轮廓的具体代码,供大家参考,具体内容如下 要求:用矩形或者圆形框住图片中的云朵(不要求全部框出) 轮廓检测 Opencv-Python接口中使用cv2.findContours()函数来查找检测物体的轮廓. import cv2 img = cv2.imread('cloud.jpg') # 灰度图像 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 二值化 ret, binary = cv2.th

  • python opencv对图像进行旋转且不裁剪图片的实现方法

    最近在做深度学习时需要用到图像处理相关的操作,在度娘上找到的图片旋转方法千篇一律,旋转完成的图片都不是原始大小,很苦恼,于是google到歪果仁的网站扒拉了一个方法,亲测好用,再次嫌弃天下文章一大抄的现象,虽然我也是抄歪果仁的. 废话不多说了,直接贴代码了. def rotate_bound(image, angle): # grab the dimensions of the image and then determine the # center (h, w) = image.shape[

  • Python OpenCV处理图像之滤镜和图像运算

    本文实例为大家分享了Python OpenCV处理图像之滤镜和图像运算的具体代码,供大家参考,具体内容如下 0x01. 滤镜 喜欢自拍的人肯定都知道滤镜了,下面代码尝试使用一些简单的滤镜,包括图片的平滑处理.灰度化.二值化等: import cv2.cv as cv image=cv.LoadImage('img/lena.jpg', cv.CV_LOAD_IMAGE_COLOR) #Load the image cv.ShowImage("Original", image) grey

随机推荐