一. 读取图片、视频等基本操作

cv.bitwise_not(image)#像素取反
import cv2 as cv
import numpy as npdef vedio_demo():capture=cv.VideoCapture(0)while(True):ret,frame=capture.read()frame=cv.flip(frame,1)#反转cv.imshow("video",frame)c=cv.waitKey(50)if c==27 :breakdef get_image_info(image):print(type(image))print(image.shape)print(image.size)print(image.dtype)pixel_data=np.array(image)print(pixel_data)def access_pexel(image): #像素取反print(image.shape)height=image.shape[0]width=image.shape[1]channel=image.shape[2]print("width: %s,height: %s,channel: %s"%(width,height,channel))for row in range(height):for col in range(width):for c in range(channel):pv=image[row,col,c]image[row,col,c]=255-pvcv.imshow("pexel_demol:",image)def inverse(image):dst=cv.bitwise_not(image)#像素取反cv.imshow("inverse demo" ,dst)def create_image(image):# image=np.zeros([400,400,3],np.uint8)# image[:,:,0]=np.ones([400,400])*255 #B# image[:, :,1] = np.ones([400, 400]) * 255  # G#image=np.zeros([400,400,1],np.uint8)#灰度图# image[:, :, 0] = np.ones([400, 400]) * 127image = np.ones([400, 400, 1], np.uint8)image=image*127m=np.array([[2,3,4],[3,4,5],[4,5,6]],np.int32)m.fill(9)print(m)cv.imshow("create_image:", image)cv.imwrite("C:\\Users\\22852\\Desktop\\opencv\\result\\create_image.jpg",image)

二.图像的运算

1.基本运算

dst=cv.add(m1,m2)#加
dst=cv.subtract(src2,src1)#减
dst=cv.multiply(src1,src2)#乘
dst=cv.divide(src2,src1)#除
M1,dev1=cv.meanStdDev(m1)#均值和标准差

2.逻辑运算

dst=cv.bitwise_and(m1,m2) #与
dst=cv.bitwise_or(src1,src2)#或
dst=cv.bitwise_not(src1,src2)#非



将图片转为灰度图可能好理解一点哦、

3. 调节对比度和亮度

def contract_brightness_demo(image,c,b):#c:对比度,b:亮度h,w,ch=image.shapeblank=np.zeros([h,w,ch],image.dtype)dst=cv.addWeighted(image,c,blank,1-c,b)#cv.imshow('contract_brightness_demo',dst)

三.图像色彩空间

def color_space_demo(image):gray=cv.cvtColor(image,cv.COLOR_RGB2GRAY)cv.imshow("gray ",gray)hsv=cv.cvtColor(image,cv.COLOR_BGR2HSV)#cv.imshow("hsv",hsv)yuv=cv.cvtColor(image,cv.COLOR_BGR2YUV)cv.imshow("yuv",yuv)ycrcb=cv.cvtColor(image,cv.COLOR_BGR2YCrCb)cv.imshow("ycrcb",ycrcb)lab=cv.cvtColor(image,cv.COLOR_BGR2LAB)#nocv.imshow("lab",lab)h,s,v = cv.split(hsv)cv.imshow("h", h)cv.imshow("s", s)cv.imshow("v", v)

颜色分割

  1. 将图片转化为HSV色彩空间
  2. 查找HSV颜色对照表,找出想要提出颜色对应的h、s、v的阈值
  3. 提出对应的信息mask,与原图作与运算
def colo_extract(image):hsv=cv.cvtColor(image,cv.COLOR_BGR2HSV)# h,s,v=cv.split(hsv)lower_hsv = np.array([11, 43,46])upper_hsv = np.array([25, 255, 255])mask = cv.inRange(hsv, lower_hsv, upper_hsv)dst = cv.bitwise_and(image,image,mask=mask)cv.imshow("img",image )cv.imshow("hsv", hsv)cv.imshow("mask", mask)cv.imshow("dst", dst)

HSV颜色对照表

如下图,直接操作效果不好,可以通过后续学的腐蚀和膨胀进行优化哦

四.ROI操作(region of interest)

图像ROI(Region Of Interest),即感兴趣的区域,通过numpy的切片操作实现。
这个区域是人为设置的,想提取哪就对哪切片。

def ROI(image): #region of interestface = image[50:100, 100:150]cv.imshow("face", face)gray = cv.cvtColor(face, cv.COLOR_BGR2GRAY)backface = cv.cvtColor(gray, cv.COLOR_GRAY2BGR)image[50:100, 100:150] = backfacecv.imshow("face image", image)

泛洪填充:floodFill

用给定的颜色填充连通的区域

def fill_color_demo(image):#泛洪填充 copyImg=image.copy()h,w=image.shape[:2]mask=np.zeros([h+2,w+2],np.uint8)#必须比image宽2个像素、高2个像素cv.floodFill(copyImg,mask,(30,30),(0,255,255),(100,100,100),(50,50,50),cv.FLOODFILL_FIXED_RANGE)cv.imshow('fill_color_demo',copyImg)'''mask 【输入/输出】 操作掩码,必须为单通道、8bit,且比image宽2个像素、高2个像素。使用前必须先初始化。Flood-filling无法跨越mask中的非0像素。例如,一个边缘检测的结果可以作为mask来阻止边缘填充。在输出中,mask中与image中填充像素对应的像素点被设置为1,或者flags标志位中设置的值(详见flags标志位的解释)。此外,该函数还用1填充了mask的边缘来简化内部处理。因此,可以在多个调用中使用同一mask,以确保填充区域不会重叠。seedPoint 起始像素点。newVal   重绘像素区域的新的填充值(颜色)。newVal 重绘区域的新值(黄色)。loDiff     当前选定像素与其连通区中相邻像素中的一个像素,或者与加入该连通区的一个seedPoint像素,二者之间的最大下行差异值。upDiff    当前选定像素与其连通区中相邻像素中的一个像素,或者与加入该连通区的一个seedPoint像素,二者之间的最大上行差异值。flags     flags标志位是一个32bit的int类型数据,其由3部分组成:0-7bit表示邻接性(4邻接、8邻接);8-15bit表示mask的填充颜色;16-31bit表示填充模式(详见填充模式解释)'''

def fill_binary_demo():image=np.zeros([400,400,3],np.uint8) #黑色image[100:300,100:300,:]=255 #填充白色cv.imshow('fill_binary', image)mask=np.ones([402,402,1],np.uint8)mask[101:301,101:301]=0  #白色变成红色cv.floodFill(image,mask,(200,200),(0,0,255),cv.FLOODFILL_MASK_ONLY)cv.imshow('fill_binary_demo', image)

五.模糊去噪

  1. cv.blur:均值模糊,去随机噪点
  2. cv.medianBlur:中值模糊,去椒盐噪点
  3. GaussianBlur:高斯模糊
import cv2 as cv
import numpy as npdef blur_demo(image):#均值模糊,去随机噪点dst=cv.blur(image,(5,5))cv.imshow("blur_demo",dst)def median_blur_demo(image):#中值模糊,去椒盐噪点dst=cv.medianBlur(image,5)cv.imshow("median_blur_demo",dst)def custum_blur_demo(image):#自己定义kernel大小kernel=np.ones([5,5],np.float32)/25 #和均值模糊效果一样# kernel=np.array([[1,-1,0],[5,-3,-1],[1,0,-1]],np.float32)#锐化,奇数,和为0:边界或1增强dst=cv.filter2D(image,-1,kernel)cv.imshow('custum_blur_demo',dst)def clamp(s):if s>255:return 255if s<0:return 0else:return sdef gaussian_nosian(image):h,w,c=image.shapefor row in range(h):for col in range(w):s=np.random.normal(0,20,3)b=image[row,col,0]#blueg=image[row,col,1]#greenr=image[row,col,2]#redimage[row, col, 0] =clamp(b+s[0])image[row, col, 1] = clamp(g+s[1])image[row, col, 2] = clamp(r+s[2])cv.imshow("gaussian nosian:", image)src=cv.imread('C:\\Users\\22852\\Desktop\\opencv\\data\\m.jpg')
cv.imshow("input image:",src)
gaussian_nosian(src)
blur_demo(src)
median_blur_demo(src)
custum_blur_demo(src)
src=cv.GaussianBlur(src,(3,3),0)  #高斯模糊
cv.imshow('GaussianBlur', src)cv.waitKey(0)
cv.destroyAllWindows()

【python OpenCV3.3图片处理教程】-图像基本运算、色彩空间、ROI、模糊去噪相关推荐

  1. python如何移动图片_Pygame的图像移动|python基础教程|python入门|python教程

    图像移动 一.基本使用 1.创建一个游戏窗口出来,加载一张图片,使用上下左右按键使得图像移动. 代码如下: # coding:utf8 import pygame.constants import s ...

  2. Python+Opencv图像处理新手入门教程(二):颜色空间转换,图像大小调整,灰度直方图

    一步一步来吧 上一节:Python+Opencv图像处理新手入门教程(一):介绍,安装与起步 1.什么是图像 对于计算机而言,图像的本质是一个由像素点构成的矩阵. 例如我们用肉眼很容易分辨一辆汽车的后 ...

  3. chatgpt赋能python:Python图片处理教程

    Python 图片处理教程 Python 是一种功能强大的编程语言,广泛应用于大量不同的行业和领域.其中之一是图像处理和分析.Python 提供了一个庞大的图像库,其拥有大量的工具和函数.Python ...

  4. thinkcmf5调用指定分类的二级_Tengine快速上手系列教程amp;视频:基于Python API的图片分类应用入门丨附彩蛋...

    前言:近期,Tengine团队加班加点,好消息接踵而来,OpenCV 4.3.0发布,OPEN AI LAB AIoT智能开发平台Tengine与OpenCV合作共同加速边缘智能,Tengine再获业 ...

  5. python下载网页里面所有的图片-Python批量下载网页图片详细教程

    很多朋友在网上查找批量下载图片的方法~发觉挺凌乱的,无从下手.这里绿茶小编就来跟大家分享下使用Python批量下载图片方法. 目标:爬取某个网站上n多页的链接,每个链接有n多张图片,每一页对应一个文件 ...

  6. python怎么画简单图片-Python绘制简易的二维图像

    大家好,我是飞向天空的牛. 最近学习了一下用Python绘制简易的二维图像,代码如下图所示:绘图代码 文本如下: import matplotlib.pyplot as plt import nump ...

  7. Python绘图之matplotlib基础教程:matplotlib库图表绘制中常规设置大全(交互模式、清除原有图像、设置横坐标显示文字/旋转角度、添加图例、绘图布局自动调整、图像显示、图像暂停)

    Python绘图之matplotlib基础教程:matplotlib库图表绘制中常规设置大全(交互模式.清除原有图像.设置横坐标显示文字/旋转角度.添加图例.绘图布局自动调整.图像显示.图像暂停) 目 ...

  8. 【OpenCV + Python】之bitwise_and、bitwise_not,bitwise_xor等图像基本运算(opencv位操作)

    1.灰度图由0~255表示,0为黑,255为白,从位操作的角度出发,纯黑色为0,不是纯黑色为1,所以在一些纯白色,或者纯黑色背景里,可以转为灰度图,利用阈值将非背景色的内容抠出来作为模板,再与原图做位 ...

  9. 基于Python的DICOM文件转换教程,使用pydicom将图片存为DICOM文件。

    基于Python的DICOM文件转换教程,使用pydicom将图片存为DICOM文件. DICOM是医学图像和信息的数字化标准,可用于将医学影像数据.诊断报告等信息在医疗领域进行传输.分享和分析.而常 ...

最新文章

  1. Hadoop学习之Hadoop集群的定制配置(一)
  2. html输入完账号密码才能跳转,HTML输入字段跳转
  3. 原生JS动态计算输入框文本内容的宽度,当内容宽度超过输入框的宽度时可控
  4. cross-entropy函数
  5. 响应式禁用(Bootstrap PK AmazeUI)
  6. lc滤波电路电感电容值选择_滤波电容如何选择
  7. python中字典的索引_按索引访问Python字典的元素
  8. java daemon线程的作用_JAVA DAEMON线程的理解
  9. mysql ubuntu 注意点
  10. Postgresql - MATERIALIZED VIEW
  11. 瞻博网络:创新是绝对优势
  12. JSON值的类型:数字,字符串,逻辑值,数组,对象,null
  13. android通讯录加密,一种手机通讯录加解密方式
  14. 华为手机助手上架流程_华为手机助手导入音乐文件在哪里看 详细步骤介绍
  15. java case 字符_Java中Switch Case使用字符串
  16. 【蓝桥杯-单片机学习笔记(十四)】DS1302
  17. Android与PC通过USB连接通信(一)
  18. 推荐系统行为序列建模-GRU4Rec
  19. 罗斯蒙特3051隔离膜片材料的选择
  20. Reddit NFT爆火,全球最大社区论坛成为Web3大规模应用前哨站

热门文章

  1. SQL工具导出CSV文件中文乱码
  2. 机器学习:房价预测项目实战
  3. 同花顺模拟炒股软件 v8.40.29 官方版
  4. 海南楼市充斥着传说 投机者必将自食其果
  5. 移动应用的黑盒测试(1)
  6. EAUML日拱一卒--序列图(Sequence Diagram)::生命周期
  7. button 点击的涟漪效果
  8. 第10章 集成MyBatis
  9. 看懂英文数据手册、搭建电路
  10. 专业计算机和游戏计算机配置要求,游戏直播电脑配置要求2019|游戏直播电脑配置单推荐(可装win7)...