python中opencv是什么_python-opencv的用法
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2
# 接收两个参数,一个是文件名,一个值,如果值为1,接收的是彩色图片,如果值为零,接受的是灰度图片。会有一个返回值,表示返回的图片内容
img = cv2.imread('mashiro.jpg',1)
# 接收两个参数,一个是窗体名称,另一个是要显示的内容
cv2.imshow('mashiro',img)
# 将程序暂停,只有这样,才能看到图片,否则图片会一闪而过因为程序结束了,如果time.sleep()的话,会卡住
cv2.waitKey(0)
2. 图片写入
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2
img = cv2.imread('mashiro.jpg',1)
cv2.imwrite('mashiro1.jpg',img)
3.不同图片质量保存
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2
img = cv2.imread('mashiro.jpg',1)
cv2.imwrite('mashiro1.jpg',img,[cv2.IMWRITE_JPEG_QUALITY,0])
cv2.imwrite('mashiro2.png',img,[cv2.IMWRITE_PNG_COMPRESSION,0])
# jpg属于有损压缩,是以图片的清晰度为代价的,数字越小,压缩比越高,图片质量损失越严重
# png属于无损压缩,数字0-9,数字越低,压缩比越低
4.像素操作基础
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2
img = cv2.imread('mashiro.jpg',1)
(a,b,c) = img[500,500]
print(a,b,c)
for i in range(1,100):
img[i,i] = (255,0,0)
cv2.imshow('mashiro',img)
cv2.waitKey(0)
5.图片缩放
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2
img = cv2.imread('mashiro.jpg',1)
cv2.imshow('mashiro',img)
imginfo = img.shape
height = imginfo[0]
width = imginfo[1]
mode = imginfo[2]
print(imginfo)
dstHeight = int(height*0.5)
dstWidth = int(width*0.5)
dst = cv2.resize(img,(dstWidth,dstHeight))
cv2.imshow('mashiro1',dst)
cv2.waitKey(0)
6.图片缩放(源码实现)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2
import numpy as np
img = cv2.imread('mashiro.jpg',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
dstHeight = int(height/2)
dstWidth = int(width/2)
dstImage = np.zeros((dstHeight,dstWidth,3),np.uint8)
for i in range(0,dstHeight):
for j in range(0,dstWidth):
iNew = int(i*(height*1.0/dstHeight))
jNew = int(j*(width*1.0/dstWidth))
dstImage[i,j] = img[iNew,jNew]
cv2.imshow('mashiro',dstImage)
cv2.waitKey(0)
7.图片剪切
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2
img = cv2.imread('mashiro.jpg',1)
imgInfo = img.shape
dst = img[10:600,10:400]
cv2.imshow('mashiro',dst)
cv2.waitKey(0)
8.图片移位
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2,numpy as np
img = cv2.imread('mashiro.jpg',1)
cv2.imshow('mashiro',img)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
matshift = np.float32([[1,0,100],[0,1,200]])
dst = cv2.warpAffine(img,matshift,(height,width))
cv2.imshow('mashiro1',dst)
cv2.waitKey(0)
9.图片移位(源码实现)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2
import numpy as np
img = cv2.imread('mashiro.jpg',1)
imgInfo = img.shape
cv2.imshow('mashiro',img)
dst = np.ones(imgInfo,np.uint8)
height = imgInfo[0]
width = imgInfo[1]
for i in range(0,height):
for j in range(0,width-300):
dst[i,j] = img[i,j]
cv2.imshow('mashiro1',dst)
cv2.waitKey(0)
10.图片镜像
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2
import numpy as np
img = cv2.imread('mashiro.jpg',1)
imgInfo = img.shape
cv2.imshow('mashiro',img)
dst = np.ones(imgInfo,np.uint8)
height = imgInfo[0]
width = imgInfo[1]
for i in range(0,height):
for j in range(0,width):
dst[i,j] = img[height-1-i,j]
cv2.imshow('mashiro1',dst)
cv2.waitKey(0)
11.图片仿射变换
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2
import numpy as np
img = cv2.imread('mashiro.jpg',1)
cv2.imshow('mashiro',img)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
matSrc = np.float32([[0,0],[0,height-1],[width-1,0]])
matDst = np.float32([[50,50],[300,height-200],[width-300,100]])
matAffine = cv2.getAffineTransform(matSrc,matDst)
dst = cv2.warpAffine(img,matAffine,(width,height))
cv2.imshow('mashiro1',dst)
cv2.waitKey(0)
12.图片旋转
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2
import numpy as np
img = cv2.imread('mashiro.jpg',1)
imgInfo = img.shape
cv2.imshow('mashiro',img)
height = imgInfo[0]
width = imgInfo[1]
matRotate = cv2.getRotationMatrix2D((width*0.5,height*0.5),45,0.5)
dst = cv2.warpAffine(img,matRotate,(width,height))
cv2.imshow('mashiro1',dst)
cv2.waitKey(0)
13.闲的蛋疼(批量将图片进行上述操作)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2
import glob
import numpy as np
all_jpg = glob.glob(r'C:\Users\Administrator\Desktop\satori\*.jpg')
for count,jpg in enumerate(all_jpg):
img = cv2.imread(jpg,1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
dst = cv2.resize(img,(int(width/2),int(height/2)))
cv2.imwrite(rf'C:\Users\Administrator\Desktop\satori\scale\{count}.jpg',dst,[cv2.IMWRITE_JPEG_QUALITY,100])
cv2.waitKey(0)
#######################################
for count,jpg in enumerate(all_jpg):
img = cv2.imread(jpg,1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
matshift = np.float32([[1,0,100],[0,1,50]])
dst = cv2.warpAffine(img,matshift,(width,height))
cv2.imwrite(rf'C:\Users\Administrator\Desktop\satori\translation\{count}.jpg',dst)
cv2.waitKey(0)
############################
for count,jpg in enumerate(all_jpg):
img = cv2.imread(jpg,1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
dst = np.zeros(imgInfo,np.uint8)
for i in range(0,height):
for j in range(0,width):
dst[i,j] = img[height-1-i,j]
cv2.imwrite(rf'C:\Users\Administrator\Desktop\satori\flip\{count}.jpg',dst)
#######################
for count,jpg in enumerate(all_jpg):
img = cv2.imread(jpg,1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
matsrc = np.float32([[0,0],[0,height-1],[width-1,0]])
matdst = np.float32([[50,50],[int(width/2),int(height/2)],[width-100,height-50]])
matAffine = cv2.getAffineTransform(matsrc,matdst)
dst = cv2.warpAffine(img,matAffine,(width,height))
cv2.imwrite(rf'C:\Users\Administrator\Desktop\satori\shear\{count}.jpg',dst)
########################
for count,jpg in enumerate(all_jpg):
img = cv2.imread(jpg,1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
matRotate = cv2.getRotationMatrix2D((width*0.5,height*0.5),60,0.5)
dst = cv2.warpAffine(img,matRotate,(width,height))
cv2.imwrite(rf'C:\Users\Administrator\Desktop\satori\rotation\{count}.jpg',dst)
14.灰度处理
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2,numpy as np
img = cv2.imread('mashiro.jpg',0)
cv2.imshow('mashiro',img)
img = cv2.imread('b.png',1)
dst = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow('mmp',dst)
cv2.waitKey(0)
img =cv2.imread('mashiro.jpg',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
dst = np.zeros((height,width,3),np.uint8)
for i in range(0,height):
for j in range(0,width):
b,g,r = img[i,j]
gray = (int(b)+int(g)+int(r))/3
dst[i,j] = [np.uint8(gray),np.uint8(gray),np.uint8(gray)]
cv2.imshow('mmp',dst)
cv2.waitKey(0)
img =cv2.imread('mashiro.jpg',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
dst = np.zeros((height,width,3),np.uint8)
for i in range(0,height):
for j in range(0,width):
b,g,r = img[i,j]
b = int(b)
g = int(g)
r = int(r)
gray = r*0.9+b*0.87+r*0.4
dst[i,j] = [np.uint8(gray),np.uint8(gray),np.uint8(gray)]
cv2.imshow('mashiro1',dst)
cv2.waitKey(0)
15.颜色反转
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import numpy as np
import cv2
img = cv2.imread('mashiro.jpg',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
dst = np.zeros((height,width,1),np.uint8)
for i in range(0,height):
for j in range(0,width):
dst[i,j] = 255 - gray[i,j]
cv2.imshow('mashiro',gray)
cv2.imshow('mashiro1',dst)
cv2.waitKey(0)
# img = cv2.imread('mashiro.jpg',1)
# imgInfo = img.shape
# height = imgInfo[0]
# width = imgInfo[1]
# #gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#
# dst = np.zeros((height,width,3),np.uint8)
#
# for i in range(0,height):
# for j in range(0,width):
# b,g,r = img[i,j]
# dst[i,j] = 255-b,255-g,255-r
#
# cv2.imshow('mashiro',img)
# cv2.imshow('mashiro1',dst)
# cv2.waitKey(0)
16.马赛克
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2
import numpy as np
img = cv2.imread('mashiro.jpg',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
for m in range(200,400):
for n in range(100,200):
if m%10==0 and n%10==0:
for i in range(0,10):
for j in range(0,10):
b,g,r = img[m,n]
img[i+m,j+n] = b,g,r
cv2.imshow('mashiro',img)
cv2.waitKey(0)
17.毛玻璃
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import numpy as np
import cv2,random
img = cv2.imread('mashiro.jpg',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
dst = np.zeros((height,width,3),np.uint8)
mm = 8
for m in range(0,height-mm):
for n in range(0,width-mm):
index = int(random.random()*8)
b,g,r = img[m+index,n+index]
dst[m,n] = b,g,r
cv2.imshow('mashiro',dst)
cv2.waitKey(0)
18.真白18岁生日快乐
19.图片融合
import cv2
import numpy as np
img = cv2.imread('mashiro.jpg',1)
img1 = cv2.imread('mashiro.jpg',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
roiH = int(height/2)
roiW = int(width/2)
imgROI = img[0:roiH,0:roiW]
img1ROI = img[0:roiH,0:roiW]
dst = np.zeros((roiH,roiW,3),np.uint8)
dst = cv2.addWeighted(imgROI,0.5,img1ROI,0.5,0)
cv2.imshow('mashiro',dst)
cv2.waitKey(0)
# 貌似程序有问题
20.边缘检测
import cv2
import numpy as np
import random
# 所有边缘检测都是基于灰度处理的,因此先要转换成灰度图片
img = cv2.imread('mashiro.jpg',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
cv2.imshow('mashiro',img)
# 1 灰度
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# 2 高斯滤波
imgG = cv2.GaussianBlur(gray,(3,3),0)
# 图片经过卷积
dst = cv2.Canny(imgG,50,50)
cv2.imshow('mashiro1',dst)
cv2.waitKey(0)
21.浮雕效果
import cv2
import numpy as np
img = cv2.imread('mashiro.jpg',1)
cv2.imshow('mashiro',img)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
dst = np.zeros((height,width,1),np.uint8)
for i in range(0,height):
for j in range(0,width-1):
grayP0 = int(gray[i,j])
grayP1 = int(gray[i,j+1])
newP = grayP0-grayP1+150
if newP>255:
newP=255
elif newP<0:
newP=0
dst[i,j] = newP
cv2.imshow('mashiro1',dst)
cv2.waitKey(0)
22.颜色映射
import cv2
import numpy as np
img = cv2.imread('mashiro.jpg',1)
cv2.imshow('mashiro',img)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
dst = np.zeros((height,width,3),np.uint8)
for m in range(height):
for n in range(width):
b,g,r = img[m,n]
b = b*1.5
g = g*1.3
if b >255:
b=255
if g>255:
g=255
dst[m,n] = b,g,r
cv2.imshow('mashiro1',dst)
cv2.waitKey(0)
23.油画特效
import cv2
import numpy as np
img = cv2.imread('mashiro.jpg',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
dst = np.zeros((height,width,3),np.uint8)
for i in range(4,height-4):
for j in range(4,width-4):
array1 = np.zeros(8,np.uint8)
for m in range(-4,4):
for n in range(-4,4):
p1=int(gray[i+m,j+n]/32)
array1[p1]=array1[p1]+1
currentMax = array1[0]
for k in range(0,8):
if currentMax
l=k
for m in range(-4,4):
for n in range(-4,4):
if gray[i+m,j+n]>(l*32) and gray[i+m,j+n]<((l+1)*32):
b,g,r = img[m,n]
dst[i,j] = b,g,r
cv2.imshow('mashiro',dst)
cv2.waitKey(0)
# 程序算的会很慢很慢
24.线段绘制
import cv2
import numpy as np
img = cv2.imread('mashiro.jpg',1)
newImagInfo = (500,500,3)
dst = np.zeros(newImagInfo,np.uint8)
# 1.图片信息 2.开始位置 3.结束位置 4.颜色
cv2.line(dst,(100,100),(400,400),(0,0,255))
# 5.线条的宽度
cv2.line(dst,(100,200),(400,200),(0,255,255),20)
# 6.线条类型
cv2.line(dst,(100,300),(400,300),(0,255,0),20,cv2.LINE_AA)
# 绘制三角形,说白了就是三条线段
cv2.line(dst,(200,150),(50,250),(25,100,255))
# 第二条线段的起始位置是第一条线段的终止位置
cv2.line(dst,(50,250),(400,380),(25,100,255))
# 第三条线段的起始位置是第一条线段的起始位置,终止位置是第二条线段的终止位置
cv2.line(dst,(200,150),(400,380),(25,100,255))
cv2.imshow('mashiro',dst)
cv2.waitKey(0)
25.矩形圆形任意多边形绘制
import cv2
import numpy as np
newImgInfo = 500,500,3
dst = np.zeros(newImgInfo,np.uint8)
# 1.图片 2.左上角坐标 3.右下角坐标 4.颜色 5.是否填充(大于零:线条宽度,小于零:是否填充)
cv2.rectangle(dst,(50,100),(200,300),(255,0,0),-1)
# 1.图片 2.圆心 3.半径 4.颜色
cv2.circle(dst,(250,250),(50),(255,0,255),-1,cv2.LINE_AA)
# 椭圆 1.图片 2.椭圆圆心 3.长轴和短轴的长度 4.偏转角度 5.圆弧起始角度 6.圆弧终止角度 7.颜色 8.是否填充
cv2.ellipse(dst,(256,256),(150,100),0,0,180,(255,255,0),-1,cv2.LINE_AA)
# 定义任意角度
points = np.array([[150,50],[140,140],[200,170],[250,250],[150,50]],np.int32) # (5,2)
points = points.reshape((-1,1,2)) # (5,1,2)
cv2.polylines(dst,[points],True,(0,255,255))
cv2.imshow('mashiro',dst)
cv2.waitKey(0)
26.文字绘制
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2
import numpy as np
img = cv2.imread('mashiro.jpg',1)
font = cv2.FONT_HERSHEY_COMPLEX
# 1.图片 2.文字的内容 3.写入的坐标 4.字体 5.字体大小 6.颜色 7,字体的粗细 8.线条类型
cv2.putText(img,'hello, i am mashiro····',(100,300),font,1,(200,100,255),2,cv2.LINE_AA)
cv2.imshow('mashiro',img)
cv2.waitKey(0)
27.图片绘制
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2
img = cv2.imread('mashiro.jpg',1)
height = int(img.shape[0]*0.2)
width = int(img.shape[1]*0.2)
imgResize = cv2.resize(img,(width,height))
for i in range(height):
for j in range(width):
img[i+200,j+350] = imgResize[i,j]
cv2.imshow('mashiro',img)
cv2.waitKey(0)
28.彩色图片直方图
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2
import numpy as np
def ImageHist(img,e_type):
color = (255,255,255)
windowName = 'gray'
if e_type == 31:
color = (255,0,0)
windowName = 'b hist'
elif e_type == 32:
color = (0,255,0)
windowName = 'g hist'
elif e_type == 33:
color = (0,0,255)
windowName = 'r hist'
# 一定要用列表的形式 1.图片 2.计算直方图的通道 3.蒙版mask 4.直方图的size,多少种 5直方图中各个像素的值
hist = cv2.calcHist([img],[0],None,[256],[0.0,255.0])
minV,maxV,minV_indice,maxL_indice = cv2.minMaxLoc(hist)
histImg = np.zeros([256,256,3],np.uint8)
for h in range(256):
interNomal = int(hist[h]*256/maxV)
cv2.line(histImg,(h,256),(h,256-interNomal),color)
cv2.imshow(windowName,histImg)
return histImg
img = cv2.imread('mashiro.jpg',3)
channels = cv2.split(img) # RGB ---->R G B
for i in range(3):
ImageHist(channels[i],31+i)
cv2.waitKey(0)
29.灰度直方图均衡化
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2
import numpy as np
img = cv2.imread('mashiro.jpg',1)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow('mashiro',gray)
dst = cv2.equalizeHist(gray)
cv2.imshow('mashiro1',dst)
cv2.waitKey(0)
30.彩色直方图均衡化
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2
import numpy as np
img = cv2.imread('mashiro.jpg',3)
cv2.imshow('mashiro',img)
b,g,r = cv2.split(img) # split之后 得到三个通道的数据
bH = cv2.equalizeHist(b)
gH = cv2.equalizeHist(g)
rH = cv2.equalizeHist(r)
result = cv2.merge((bH,gH,rH)) # 将三个通道合成在一起
cv2.imshow('mashiro1',result)
cv2.waitKey(0)
31.YUV直方图均衡化
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2
import numpy as np
img = cv2.imread('mashiro.jpg',1)
imgYUV = cv2.cvtColor(img,cv2.COLOR_BGR2YCrCb)
cv2.imshow('mashiro',img)
channelYUV = cv2.split(imgYUV)
channelYUV[0] = cv2.equalizeHist(channelYUV[0])
channels = cv2.merge(channelYUV)
result = cv2.cvtColor(channels,cv2.COLOR_YCrCb2BGR)
cv2.imshow('mashiro1',result)
cv2.waitKey(0)
32.图片修补
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2
import numpy as np
img = cv2.imread('mashiro.jpg',1)
for i in range(200,300):
img[i,200] = (255,255,255)
img[i,200+1] = (255,255,255)
img[i,200-1] = (255,255,255)
for i in range(150,250):
img[250,i] = (255,255,255)
img[250+1,i] = (255,255,255)
img[250-1,i] = (255,255,255)
cv2.imwrite('damaged_mashiro.jpg',img)
img = cv2.imread('damaged_mashiro.jpg',3)
cv2.imshow('damaged_mashiro.jpg',img)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
paint = np.zeros((height,width,1),np.uint8)
for i in range(200,300):
paint[i,200] = 255
paint[i,200+1] = 255
paint[i,200-1] = 255
for i in range(150,250):
paint[250,i] = 255,
paint[250+1,i] = 255
paint[250-1,i] = 255
cv2.imshow('paint',paint)
imgDst = cv2.inpaint(img,paint,3,cv2.INPAINT_TELEA)
cv2.imshow('mashiro',imgDst)
cv2.waitKey(0)
33.亮度增强
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2
import numpy as np
img = cv2.imread('mashiro.jpg',1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
dst = np.zeros((height,width,3),np.uint8)
# 新图片像素的亮度等于原图片像素的亮度加上一个固定值
cv2.imshow('mashiro',img)
for i in range(height):
for j in range(width):
(b,g,r) = img[i,j]
bb = int(b)+120 # 自由变换
gg = int(g)+120
rr = int(r)+120
if bb > 255:
bb = 255
if gg > 255:
gg = 255
if rr > 255:
rr = 255
dst[i,j] = img[i,j]
cv2.imshow('mashiro1',dst)
cv2.waitKey(0)
34.磨皮美白
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
# 原理:双边滤波
import cv2
img = cv2.imread('mashiro.jpg',1)
cv2.imshow('mashiro',img)
dst = cv2.bilateralFilter(img,15,35,35)
cv2.imshow('mashiro1',dst)
cv2.waitKey(0)
# 由于是动漫图片,然鹅并看不出什么效果
35.高斯滤波
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2
img = cv2.imread('mashiro.jpg',1)
cv2.imshow('mashiro',img)
dst = cv2.GaussianBlur(img,(5,5),1.5)
cv2.imshow('mashiro1',dst)
cv2.waitKey(0)
# 如果原图上有许多的小点点,那么高斯滤波可以过滤掉,同时图片也会变得模糊
36.均值滤波
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2
import numpy as np
img = cv2.imread('mashiro.jpg',1)
cv2.imshow('mashiro',img)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
dst = np.zeros((height,width,3),np.uint8)
for i in range(3,height-3):
for j in range(3,width-3):
sum_b = int(0)
sum_g = int(0)
sum_r = int(0)
for m in range(-3,3):
for n in range(-3,3):
b,g,r = img[i+m,j+n]
sum_b = sum_b + int(b)
sum_g = sum_g + int(g)
sum_r = sum_r + int(r)
b = np.uint8(sum_b/36)
g = np.uint8(sum_g/36)
r = np.uint8(sum_r/36)
dst[i,j] = b,g,r
cv2.imshow('mashiro1',dst)
cv2.waitKey(0)
# 然而并无卵用,程序还很慢
37.中值滤波
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:love_cat
import cv2
import numpy as np
img = cv2.imread('mashiro.jpg', 1)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('mashiro', img)
dst = np.zeros((height, width, 3), np.uint8)
collect = np.zeros(9, np.uint8)
for i in range(1, height-1):
for j in range(1, width-1):
k = 0
for m in range(-1, 2):
for n in range(-1, 2):
gray = img[i + m, j + n]
collect[k] = gray
k = k + 1
for k in range(0, 9):
p1 = collect[k]
for t in range(k + 1, 9):
if p1 < collect[t]:
mid = collect[t]
collect[t] = p1
p1 = mid
dst[i, j] = collect[4]
cv2.imshow('mashiro1',dst)
cv2.waitKey(0)
# 效果并不理想,程序也很慢
38.视频分解成图片
# 视频分解图片
# 1 load 2 info 3 parse 4 imshow imwrite
import cv2
# 打开一个视频获取,一个句柄
cap = cv2.VideoCapture(r"01.mp4")
# 判断是否打开
isOpened = cap.isOpened
print(isOpened)
# 获取视频的帧率
fps = cap.get(cv2.CAP_PROP_FPS)
# 获取图片的宽度和高度
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
print("帧率=%s,宽度=%s,高度=%s" % (fps, width, height))
i = 0
while isOpened:
if i == 100:
break # 我们只获取100张图片
else:
i += 1
# 读取每一张flag,frame
# flag表示是否读取成功
# frame表示图片的内容
(flag, frame) = cap.read()
fileName = "image"+str(i)+".jpg"
print(fileName)
if flag:
cv2.imwrite(fileName, frame, [cv2.IMWRITE_JPEG_QUALITY, 100]) # 表示精度最高
print("end!!!")
# 程序运行结果
'''
帧率=15.0,宽度=1280,高度=720
image1.jpg
image2.jpg
image3.jpg
image4.jpg
image5.jpg
image6.jpg
image7.jpg
image8.jpg
image9.jpg
image10.jpg
image11.jpg
image12.jpg
image13.jpg
image14.jpg
image15.jpg
image16.jpg
image17.jpg
image18.jpg
image19.jpg
image20.jpg
image21.jpg
image22.jpg
image23.jpg
image24.jpg
image25.jpg
image26.jpg
image27.jpg
image28.jpg
image29.jpg
image30.jpg
image31.jpg
image32.jpg
image33.jpg
image34.jpg
image35.jpg
image36.jpg
image37.jpg
image38.jpg
image39.jpg
image40.jpg
image41.jpg
image42.jpg
image43.jpg
image44.jpg
image45.jpg
image46.jpg
image47.jpg
image48.jpg
image49.jpg
image50.jpg
image51.jpg
image52.jpg
image53.jpg
image54.jpg
image55.jpg
image56.jpg
image57.jpg
image58.jpg
image59.jpg
image60.jpg
image61.jpg
image62.jpg
image63.jpg
image64.jpg
image65.jpg
image66.jpg
image67.jpg
image68.jpg
image69.jpg
image70.jpg
image71.jpg
image72.jpg
image73.jpg
image74.jpg
image75.jpg
image76.jpg
image77.jpg
image78.jpg
image79.jpg
image80.jpg
image81.jpg
image82.jpg
image83.jpg
image84.jpg
image85.jpg
image86.jpg
image87.jpg
image88.jpg
image89.jpg
image90.jpg
image91.jpg
image92.jpg
image93.jpg
image94.jpg
image95.jpg
image96.jpg
image97.jpg
image98.jpg
image99.jpg
image100.jpg
end!!!
'''
转自:https://www.cnblogs.com/traditional/p/9043931.html
python中opencv是什么_python-opencv的用法相关推荐
- python中count的作用_python count函数用法详解
在python中可以使用"count()"函数统计字符串里某个字符出现的次数,该函数用于统计次数,其语法是"count(sub, start= 0,end=len(str ...
- python中的get函数_python之函数用法get()
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法get() #http://www.runoob.com/python/att-dic ...
- python中argv的使用_python sys.argv[]用法
sys.argv变量是一个字符串的列表.特别地,sys.argv包含了命令行参数 的列表,即使用命令行传递给你的程序的参数. 这里,当我们执行python using_sys.py we are ar ...
- python中tan怎么表示_Python numpy.tan()用法及代码示例
numpy.tan(array [,out])= ufunc'tan'):此数学函数可帮助用户计算所有x(作为数组元素)的三角切线. 参数: array :[array_like]elements a ...
- python中sinh是什么_Python PyTorch sinh()用法及代码示例
PyTorch是由Facebook开发的开源机器学习库.它用于深度神经网络和自然语言处理. 功能torch.sinh()为PyTorch中的双曲正弦函数提供支持.它期望以弧度形式输入.输入类型为张量, ...
- python中sinh是什么_Python numpy.sinh()用法及代碼示例
numpy.sinh(x [,out])= ufunc'sin'):此數學函數可幫助用戶計算所有x(作為數組元素)的雙曲正弦值. 等效於1/2 *(np.exp(x)-np.exp(-x))或-1j ...
- python中cos怎么表示_Python numpy.cos()用法及代码示例
numpy.cos(x [,out])= ufunc'cos'):此数学函数可帮助用户计算所有x(作为数组元素)的三角余弦. 参数: array :[array_like]elements are i ...
- python中ln怎么写_Python Decimal ln()用法及代码示例
Decimal#ln():ln()是一个Decimal类方法,它返回Decimal值的自然(对数e)对数. 用法:Decimal.ln() 参数:十进制值 返回:十进制值的自然(以e为底)对数. 代码 ...
- python中res代表什么_Python数据类型的用法
字符串的用法 res ='hellow,world'print(res) #res.显示的都是它的方法,下划线的除外 1 判断字符串的结尾字符,返回的值的布尔形式 endswith 判断字符串的开头字 ...
- python中dir的使用_python中dir函数如何使用?
python中,有很多的模块,有的时候搞不清或者记不住这些模块的用法,一个个检索会很麻烦,这时我们可以使用dir函数.dir函数是python中的内置函数,它可以用来列出模块定义的标识符如函数.类和变 ...
最新文章
- python中递归函数特点,Python递归函数特点及原理解析
- 遍历目录下的文件每250M打包一个文件
- 《剑指offer》第九题(用两个栈实现队列)
- vue history模式Nginx配置
- 有关asp.net技术的外文文献_医学科技论文写作中参考文献的标准格式及常见问题...
- 武林c语言,c语言printf函数的使用
- 6. PHP之适配器模式
- golang 大数据平台_一文读懂数据平台、大数据平台、数据中台
- 三列自适应布局(圣杯布局)
- c语言编写五子棋报告,C语言编写五子棋游戏
- K8S从入门到放弃系列-(14)Kubernetes集群Dashboard部署
- My Seventy-first Page - 目标和 - By Nicolas
- BZOJ 2037 [Sdoi2008] Sue的小球
- LAN、MAN、WAN指的是什么网络
- Unity中的第一种签到方式的源码?
- xp下u盘安装linux双系统,在XP下用U盘安装Ubuntukylin到硬盘的方法(双系统共存)...
- 双闭环pid matlab仿真,SPWM波控制单相逆变器双闭环PID调节器的Simulink建模与仿真...
- 在线学生信息管理平台
- 淘宝网十周年大事记盘点
- 将地图导出为图片或PDF文件
热门文章
- 人民币贬值会让八类人损失惨重!有你吗?
- GPL以及Copyleft协议使用率下降明显
- 多媒体音频格式解析WMA WAV OGG AAC APE FLAC
- H.264解码器中CAVLC码表查找算法的分析与优化
- 解决:Command line is too long. In order to reduce its length classpath file can be used.
- 计算机专业 程序员技术练级攻略(转载)
- Selenium自动化获取WebSocket信息
- 微信获取token -1000
- nodejs里的module.exports和exports
- UIView类绘图出现错误提示