首页 > 其他分享 >cv_second step

cv_second step

时间:2024-09-26 17:51:09浏览次数:10  
标签:img cv2 second step 图像 import 100 cv 255

对图像的基础操作

1.修改像素值

import cv2
import  numpy as np
img=cv2.imread("test1.jpg")
img[100,100]=[255,255,255]
print (img[100,100])

类似于矩阵中数据替换,但是这种方式很慢,能矩阵运算就不用循环。

用.itemset ()函数来修改

import cv2
import  numpy as np
img=cv2.imread("test1.jpg")
print(img[100,100])
print(img.item(100,100,2))
img.itemset((100,100,2),100)
print(img.item(100,100,2))

2.获取图像属性

img.shape()能返回:行、列、通道数

import cv2
import  numpy as np
img=cv2.imread("test1.jpg")
print(img.shape)

img.size()能返回图像的像素数目

import cv2
import  numpy as np
img=cv2.imread("test1.jpg")
print(img.size)

img.dtype()能返回图像 的数据类型

import cv2
import  numpy as np
img=cv2.imread("test1.jpg")
print(img.dtype)

3.直接像素点和ROI(region of interest)

之前修改像素点都是用数组方法,一个个循环去修改,而这里选择用切片的方法把图像某块区域,提取出来,再对原始图像进行改动。

import cv2
import  numpy as np
img=cv2.imread("1.jpg",0)
part=img[:160,:174]
img[160:,160:]=part
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

4.拆分合并通道

BGR三个通道可以拆开也可以合并

import cv2
import  numpy as np
img=cv2.imread("test1.jpg")
b,g,r=cv2.split(img)
cv2.imshow("Red", r) 
cv2.imshow("Green", g)
cv2.imshow("Blue", b)
cv2.waitKey(0)
cv2.merge()#通道合并

5.图像边界填充

import cv2
import numpy
img=cv2.imread('11.jpg')
img=cv2.copyMakeBorder(img,50,50,50,50,cv2.BORDER_CONSTANT,value=(255,255,255))
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.copyMakeBorder(src,top,bottom,left,right,borderType)

src : 输入的图片
top, bottom, left, right :相应方向上的边框宽度
borderType:定义要添加边框的类型,它可以是以下的一种:
cv2.BORDER_CONSTANT:添加的边界框像素值为常数(需要额外再给定一个参数)
cv2.BORDER_REFLECT:添加的边框像素将是边界元素的镜面反射,类似于gfedcba|abcdefgh|hgfedcba
cv2.BORDER_REFLECT_101 or cv2.BORDER_DEFAULT:和上面类似,但是有一些细微的不同,类似于gfedcb|abcdefgh|gfedcba
cv2.BORDER_REPLICATE:使用最边界的像素值代替,类似于aaaaaa|abcdefgh|hhhhhhh
cv2.BORDER_WRAP:上边缘的元素放到下边缘复制cdefgh|abcdefgh|abcdefg
value:如果borderType为cv2.BORDER_CONSTANT时需要填充的常数值。

6.算术操作

1.图像加法

(相加的照片大小一定要相等)

cv2.add(img1,img2)(无权)

img1:被加数

img2:加数,可以是简单的标量

PS:Opencv 和 Numpy中的加法不一样,在超过像素上限255的情况下,就会有溢出问题。

Opencv采取饱和操作,当值超过255后直接取255

Numpy会取余,如:(250+10)%255=5,最后取得的值是5

所以图像操作中更倾向于使用cv的库

cv2.addWeighted(src1,alpha,src2,beta,gamma)(加权)

src1:第一幅图片

alpha:第一幅权重

src2:第二幅图片

beta:第二幅权重

gamma:附加常数
i m g = i m g 1 ∗ a l p h a + i m g 2 ∗ b e t a + g a m m a img=img1*alpha+img2*beta+gamma img=img1∗alpha+img2∗beta+gamma

2.图像逻辑运算

1.掩膜(mask)

用选定的图像、图形或物体,对处理的图像(全部或局部)进行遮挡,来控制图像处理的区域或处理过程。

  1. 提取感兴趣区:用预先制作的感兴趣区掩膜与待处理图像相乘,得到感兴趣区图像,感兴趣区内图像值保持不变,而区外图像值都为0;
  2. 屏蔽作用:用掩膜对图像上某些区域作屏蔽,使其不参加处理或不参加处理参数的计算,或仅对屏蔽区作处理或统计;
  3. 结构特征提取:用相似性变量或图像匹配方法检测和提取图像中与掩膜相似的结构特征;
  4. 特殊形状图像的制作。

原图像的像素矩阵为
[ 1 2 3 4 5 6 7 8 9 ] \left[ \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{matrix} \right] ​147​258​369​

掩膜的矩阵为
[ 1 0 1 0 0 1 1 0 0 ] \left[ \begin{matrix} 1 & 0& 1\\ 0 & 0 & 1 \\ 1 & 0 & 0 \end{matrix} \right] ​101​000​110​
掩膜对原图像的像素进行覆盖(与)操作
[ 1 0 3 0 0 6 7 0 0 ] \left[ \begin{matrix} 1 & 0 & 3 \\ 0 & 0 & 6 \\ 7 & 0 & 0 \end{matrix} \right] ​107​000​360​
只留下想要的部分

掩膜主要用于运用在颜色追踪上(选定追踪颜色后,追踪指定颜色物品运动)

2. 逻辑运算
cv2.bitwise_not(img,mask=None)#按位取反
cv2.bitwise_and(img1,img2,mask=None)#按位与
cv2.bitwise_or(img1,img2,mask=None)#按位取或
cv2.bitwise_xor(img1,img2,mask=None)#按位取异或

mask:具体操作时的掩膜,没有就None

AND:两个像素都大于0时为真

OR:两个像素有一个大于0就为真

XOR:如两个值不相同,则异或结果为1。如果两个值相同,异或结果为0。

NOT:10,01

标签:img,cv2,second,step,图像,import,100,cv,255
From: https://blog.csdn.net/m0_51634066/article/details/142564322

相关文章

  • cv_first step
    先前操作导包用清华镜像源在Annacondapromots中Base环境下用pip命令pipinstallopencv-python-ihttps://pypi.tuna.tsinghua.edu.cn/simple下载cv包cv.__version__查看版号注意1.在同一文件夹下面,可以直接调用不写路径importcv2ascvimg=cv.imread("test1......
  • 智能监控,守护绿色能源:EasyCVR在电站视频监控中心的一站式解决方案
    随着科技的飞速发展,视频监控技术在社会安全、企业管理及智慧城市建设等领域中扮演着越来越重要的角色。特别是在电力行业中,电站作为能源供应的关键设施,其安全性和稳定性至关重要。传统的人工监控方式已难以满足现代电站复杂多变的运行需求,因此,构建一个高效、稳定、智能的电站视频......
  • 探索EasyCVR视频融合平台:在视频编解码与转码领域的灵活性优势
    随着视频监控技术的飞速发展,各类应用场景对视频数据的处理需求日益复杂多样。从公共安全到智慧城市,再到工业监控,高效、灵活的视频处理能力成为衡量视频融合平台性能的重要标准。在众多解决方案中,EasyCVR视频融合平台凭借其在视频编解码、转码等能力上的强大灵活性,脱颖而出,成为行业......
  • EasyCVR智慧公园视频智能管理方案:赋能公园安全管理新高度
    随着城市化进程的加速,智慧城市建设已成为提升城市管理效率、增强居民生活质量的重要途径。智慧公园作为智慧城市的重要组成部分,其安全与管理水平直接影响着市民的休闲娱乐体验。EasyCVR智慧公园视频智能管理方案,正是基于这一背景应运而生,它集成了高清视频监控、智能分析、远程管理......
  • OpenCV(cv::mean())
    目录1.函数定义2.示例2.1计算灰度图像的平均值2.2计算彩色图像的每个通道的平均值2.3带掩码的平均值计算总结cv::mean()是OpenCV中用于计算图像的平均值的函数。它可以用于单通道图像、多通道图像(如彩色图像)、带掩码的图像等。1.函数定义Scalarcv::mean(InputArr......
  • 赋能未来工厂:EasyCVR视频平台助力装备制造业迈向智能制造
    一、方案背景随着信息技术的飞速发展,装备制造业作为国民经济的支柱产业,正面临着智能化转型的迫切需求。为了提升生产效率、保障设备安全、优化管理流程,装备制造业迫切需要引入先进的视频监控与人工智能技术。EasyCVR视频平台凭借其强大的视频汇聚、智能分析和管理能力,为装备制造......
  • ShiftAddAug:基于乘法算子训练的最新无乘法网络方案 | CVPR'24
    不包含乘法的运算符,如移位和加法,因其与硬件的兼容性而日益受到重视。然而,采用这些运算符的神经网络(NNs)通常表现出比具有相同结构的传统NNs更低的准确性。ShiftAddAug利用成本较高的乘法来增强高效但功能较弱的无乘法运算符,从而在没有任何推理开销的情况下提高性能。将一个ShiftAd......
  • EfficientViT(2023CVPR):具有级联组注意力的内存高效视觉Transformer!
    EfficientViT:MemoryEfficientVisionTransformerwithCascadedGroupAttentionEfficientViT:具有级联组注意力的内存高效视觉Transformer万文长字,请耐心观看~论文地址:https://arxiv.org/abs/2305.07027代码地址:Cream/EfficientViTatmain·microsoft/Cream......
  • 综合实验1 利用OpenCV统计物体数量
    一、实验简介传统的计数方法常依赖于人眼目视计数,不仅计数效率低,且容易计数错误。通常现实中的对象不会完美地分开,需要通过进一步的图像处理将对象分开并计数。本实验巩固对OpenCV的基础操作的使用,适当的增加OpenCV在图像处理方向的进阶操作,例如利用canny算子等算法进行图像分......
  • 解决 ModuleNotFoundError: No module named ‘cv2‘?
    前言解决ModuleNotFoundError:Nomodulenamed‘cv2’?ModuleNotFoundError:Nomodulenamed‘cv2’?1.安装opencv-python:pipinstallopencv-python-ihttps://pypi.tuna.tsinghua.edu.cn/simple/2.出现错误ERROR:Couldnotbuildwheelsforopencv-python......