#!/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的用法相关推荐

  1. python中count的作用_python count函数用法详解

    在python中可以使用"count()"函数统计字符串里某个字符出现的次数,该函数用于统计次数,其语法是"count(sub, start= 0,end=len(str ...

  2. python中的get函数_python之函数用法get()

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法get() #http://www.runoob.com/python/att-dic ...

  3. python中argv的使用_python sys.argv[]用法

    sys.argv变量是一个字符串的列表.特别地,sys.argv包含了命令行参数 的列表,即使用命令行传递给你的程序的参数. 这里,当我们执行python using_sys.py we are ar ...

  4. python中tan怎么表示_Python numpy.tan()用法及代码示例

    numpy.tan(array [,out])= ufunc'tan'):此数学函数可帮助用户计算所有x(作为数组元素)的三角切线. 参数: array :[array_like]elements a ...

  5. python中sinh是什么_Python PyTorch sinh()用法及代码示例

    PyTorch是由Facebook开发的开源机器学习库.它用于深度神经网络和自然语言处理. 功能torch.sinh()为PyTorch中的双曲正弦函数提供支持.它期望以弧度形式输入.输入类型为张量, ...

  6. python中sinh是什么_Python numpy.sinh()用法及代碼示例

    numpy.sinh(x [,out])= ufunc'sin'):此數學函數可幫助用戶計算所有x(作為數組元素)的雙曲正弦值. 等效於1/2 *(np.exp(x)-np.exp(-x))或-1j ...

  7. python中cos怎么表示_Python numpy.cos()用法及代码示例

    numpy.cos(x [,out])= ufunc'cos'):此数学函数可帮助用户计算所有x(作为数组元素)的三角余弦. 参数: array :[array_like]elements are i ...

  8. python中ln怎么写_Python Decimal ln()用法及代码示例

    Decimal#ln():ln()是一个Decimal类方法,它返回Decimal值的自然(对数e)对数. 用法:Decimal.ln() 参数:十进制值 返回:十进制值的自然(以e为底)对数. 代码 ...

  9. python中res代表什么_Python数据类型的用法

    字符串的用法 res ='hellow,world'print(res) #res.显示的都是它的方法,下划线的除外 1 判断字符串的结尾字符,返回的值的布尔形式 endswith 判断字符串的开头字 ...

  10. python中dir的使用_python中dir函数如何使用?

    python中,有很多的模块,有的时候搞不清或者记不住这些模块的用法,一个个检索会很麻烦,这时我们可以使用dir函数.dir函数是python中的内置函数,它可以用来列出模块定义的标识符如函数.类和变 ...

最新文章

  1. python中递归函数特点,Python递归函数特点及原理解析
  2. 遍历目录下的文件每250M打包一个文件
  3. 《剑指offer》第九题(用两个栈实现队列)
  4. vue history模式Nginx配置
  5. 有关asp.net技术的外文文献_医学科技论文写作中参考文献的标准格式及常见问题...
  6. 武林c语言,c语言printf函数的使用
  7. 6. PHP之适配器模式
  8. golang 大数据平台_一文读懂数据平台、大数据平台、数据中台
  9. 三列自适应布局(圣杯布局)
  10. c语言编写五子棋报告,C语言编写五子棋游戏
  11. K8S从入门到放弃系列-(14)Kubernetes集群Dashboard部署
  12. My Seventy-first Page - 目标和 - By Nicolas
  13. BZOJ 2037 [Sdoi2008] Sue的小球
  14. LAN、MAN、WAN指的是什么网络
  15. Unity中的第一种签到方式的源码?
  16. xp下u盘安装linux双系统,在XP下用U盘安装Ubuntukylin到硬盘的方法(双系统共存)...
  17. 双闭环pid matlab仿真,SPWM波控制单相逆变器双闭环PID调节器的Simulink建模与仿真...
  18. 在线学生信息管理平台
  19. 淘宝网十周年大事记盘点
  20. 将地图导出为图片或PDF文件

热门文章

  1. 人民币贬值会让八类人损失惨重!有你吗?
  2. GPL以及Copyleft协议使用率下降明显
  3. 多媒体音频格式解析WMA WAV OGG AAC APE FLAC
  4. H.264解码器中CAVLC码表查找算法的分析与优化
  5. 解决:Command line is too long. In order to reduce its length classpath file can be used.
  6. 计算机专业 程序员技术练级攻略(转载)
  7. Selenium自动化获取WebSocket信息
  8. 微信获取token -1000
  9. nodejs里的module.exports和exports
  10. UIView类绘图出现错误提示