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)

copycode.gif

1229382-20180516002528393-1109764650.png

2. 圖片寫入

copycode.gif

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author:love_cat

import cv2

img = cv2.imread('mashiro.jpg',1)

cv2.imwrite('mashiro1.jpg',img)

copycode.gif

3.不同圖片質量保存

copycode.gif

#!/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,數字越低,壓縮比越低

copycode.gif

4.像素操作基礎

copycode.gif

#!/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)

copycode.gif

1229382-20180516002926491-229897311.png

5.圖片縮放

copycode.gif

#!/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)

copycode.gif

1229382-20180516003038351-475109920.png

6.圖片縮放(源碼實現)

copycode.gif

#!/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)

copycode.gif

7.圖片剪切

copycode.gif

#!/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)

copycode.gif

1229382-20180516003301212-1506066048.png

8.圖片移位

copycode.gif

#!/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)

copycode.gif

1229382-20180516003348129-1942194599.png

9.圖片移位(源碼實現)

copycode.gif

#!/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)

copycode.gif

10.圖片鏡像

copycode.gif

#!/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)

copycode.gif

1229382-20180516003513940-473980736.png

11.圖片仿射變換

copycode.gif

#!/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)

copycode.gif

1229382-20180516003618302-564325183.png

12.圖片旋轉

copycode.gif

#!/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)

copycode.gif

1229382-20180516003655088-2126333148.png

13.閑的蛋疼(批量將圖片進行上述操作)

copycode.gif

#!/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)

copycode.gif

14.灰度處理

copycode.gif

#!/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)

copycode.gif

1229382-20180516004017379-967034486.png

15.顏色反轉

copycode.gif

#!/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)

copycode.gif

1229382-20180516004148060-1275928837.png

1229382-20180516004125327-989403274.png

16.馬賽克

copycode.gif

#!/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)

copycode.gif

1229382-20180516004226525-1813911357.png

17.毛玻璃

copycode.gif

#!/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)

copycode.gif

1229382-20180516004307451-335150380.png

18.真白18歲生日快樂

19.圖片融合

copycode.gif

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)

# 貌似程序有問題

copycode.gif

1229382-20180516004407016-1753639708.png

20.邊緣檢測

copycode.gif

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)

copycode.gif

1229382-20180516004445637-255514107.png

21.浮雕效果

copycode.gif

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)

copycode.gif

1229382-20180516004526996-995268397.png

22.顏色映射

copycode.gif

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)

copycode.gif

1229382-20180516004604470-2111127942.png

23.油畫特效

copycode.gif

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)

# 程序算的會很慢很慢

copycode.gif

1229382-20180516004645534-1863837143.png

24.線段繪制

copycode.gif

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)

copycode.gif

1229382-20180516004718974-1311875951.png

25.矩形圓形任意多邊形繪制

copycode.gif

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)

copycode.gif

1229382-20180516004821100-1214876246.png

26.文字繪制

copycode.gif

#!/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)

copycode.gif

1229382-20180516004938593-1133848221.png

27.圖片繪制

copycode.gif

#!/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)

copycode.gif

1229382-20180516005023699-677773526.png

28.彩色圖片直方圖

copycode.gif

#!/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)

copycode.gif

1229382-20180516005057471-1283057062.png

29.灰度直方圖均衡化

copycode.gif

#!/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)

copycode.gif

1229382-20180516005134009-1177753774.png

30.彩色直方圖均衡化

copycode.gif

#!/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)

copycode.gif

1229382-20180516005210606-1587679815.png

31.YUV直方圖均衡化

copycode.gif

#!/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)

copycode.gif

1229382-20180516005251773-1717073847.png

32.圖片修補

copycode.gif

#!/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)

copycode.gif

1229382-20180516005321956-234980789.png

33.亮度增強

copycode.gif

#!/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)

copycode.gif

1229382-20180516005352907-1982456861.png

34.磨皮美白

copycode.gif

#!/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)

# 由于是動漫圖片,然鵝并看不出什么效果

copycode.gif

1229382-20180516005428565-1254574967.png

35.高斯濾波

copycode.gif

#!/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)

# 如果原圖上有許多的小點點,那么高斯濾波可以過濾掉,同時圖片也會變得模糊

copycode.gif

1229382-20180516005500692-1933760109.png

36.均值濾波

copycode.gif

#!/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)

# 然而并無卵用,程序還很慢

copycode.gif

1229382-20180516005537035-567840293.png

37.中值濾波

copycode.gif

#!/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)

# 效果并不理想,程序也很慢

copycode.gif

1229382-20180516005610810-1138547707.png

38.視頻分解成圖片

copycode.gif

# 視頻分解圖片

# 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

copycode.gif

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455643.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455643.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455643.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

openjudge 14:求10000以內n的階乘

14:求10000以內n的階乘 總時間限制:5000ms內存限制:655360kB描述求10000以內n的階乘。 輸入只有一行輸入&#xff0c;整數n&#xff08;0<n<10000&#xff09;。輸出一行&#xff0c;即n!的值。樣例輸入100 樣例輸出933262154439441526816992388562667004907159682643816…

【Tensorflow】卷積神經網絡實現藝術風格化通過Vgg16實現

卷積神經網絡實現藝術風格化 基于卷積神經網絡實現圖片風格的遷移&#xff0c;可以用于大學生畢業設計基于python&#xff0c;深度學習&#xff0c;tensorflow卷積神經網絡&#xff0c; 通過Vgg16實現&#xff0c;一幅圖片內容特征的基礎上添加另一幅圖片的風格特征從而生成一幅…

抗誤碼技術

抗誤碼技術&#xff1a; 視頻傳輸過程中的錯誤是不可避免的&#xff0c;抗誤碼技術歷來都足視頻領域一個研究的熱點。H264標準繼承r以前視頻編碼標準中某些優秀的錯誤恢復工具&#xff0c;同時也改進和創新了多種錯誤恢復丁具。這些錯誤恢復的工具主要有&#xff1a;參數集、數…

Linux統計文件行數、字數、字節數

2019獨角獸企業重金招聘Python工程師標準>>> 語法&#xff1a;wc [選項] 文件 說明&#xff1a;該命令統計給定文件中的字節數、字數、行數。如果沒有給出文件名&#xff0c;則從標準輸入讀取。wc同時也給出所有指定文件的總統計數。字是由空格字符區分開的最大字符…

tkinter中鼠標與鍵盤事件

tkinter中鼠標與鍵盤事件&#xff08;十五&#xff09; 本文轉自Tynam Yang的博客園 import tkinterwuya tkinter.Tk() wuya.title("wuya") wuya.geometry("300x2001020")bt tkinter.Button(wuya,text鼠標進入打印) bt.pack()def func(event):print(鼠…

html解析のBeautifulSoup

引子&#xff1a; 使用python爬蟲對爬取網頁進行解析的時候&#xff0c;如果使用正則表達式&#xff0c;有很多局限&#xff0c;比如標簽中出現換行&#xff0c;或者標簽的格式不規范&#xff0c;都有可能出現取不到數據&#xff0c;BeautifulSoup作為一個專門處理html格式的py…

【Tensorflow】人臉128個關鍵點識別基于卷積神經網絡實現

引言&#xff1a; 卷積神經網絡 卷積神經網絡最早是為了解決圖像識別的問題,現在也用在時間序列數據和文本數據處理當中,卷積神經網絡對于數據特征的提取不用額外進行,在對網絡的訓練的過程當中,網絡會自動提取主要的特征.卷積神經網絡直接用原始圖像的全部像素作為輸入,但是內…

python 爬蟲 包_python爬蟲學習之路-抓包分析

利用瀏覽器抓包&#xff0c;是爬蟲中的很實用的技能。在爬蟲編程之前&#xff0c;我們要對抓取的目標頁面有所了解&#xff0c;比如瀏覽器的這個請求這個頁面中間都經歷了什么&#xff0c;數據是怎么發送和返回的。 抓包的作用 我把抓包分析的作用簡單列一下&#xff1a; 分析請…

幀間EC原理和過程

出錯的宏塊&#xff08;圖中灰色表示&#xff09;根據上、下、左、右四個方向相鄰宏塊的不同分割情況及預測類型進行插值。將最后的結果中進行比較&#xff0c;選取邊界像素差值之和最小者為最優的EC方案。其步驟為&#xff1a; 1、判斷相鄰宏塊左上角8*8塊的預測模式是否大于R…

Maven依賴的是本地工程還是倉庫jar包?

相信大家都碰見過maven配置的依賴或者是jar包或者是工程&#xff0c;在開發的過程當中&#xff0c;我們當然需要引入的是工程&#xff0c;這樣查看maven依賴的文件的時候&#xff0c;就能直接查看到源碼。 一、本地工程依賴 舉個例子&#xff0c;其架構如下所示&#xff08;以下…

關于django新版本無法使用MySQL數據庫的問題

關于django新版本無法使用MySQL數據庫的問題 參考這里 稍微記錄下Django2.2使用MariaDB和MySQL遇到的坑 現在演示一下整個流程吧 1.創建項目和應用 PS&#xff1a;你也可以使用PyCharm直接創建項目 2.注冊應用 先把剛剛創建的應用添加進去 3.配置MySQL或者MariaDB 4.PyMySQL替…

[轉]Spring事務tx:annotation-driven/

在使用SpringMVC的時候&#xff0c;配置文件中我們經常看到 annotation-driven 這樣的注解&#xff0c;其含義就是支持注解&#xff0c;一般根據前綴 tx、mvc 等也能很直白的理解出來分別的作用。<tx:annotation-driven/> 就是支持事務注解的&#xff08;Transactional&a…

【自動化測試】整理各種測試開發工具!持續更新

收集和整理各種測試工具&#xff0c;自動化測試工具&#xff0c;自動化測試框架&#xff0c;覺得有幫助記得三連一下。歡迎提交各類測試工具到本博客。 通用測試框架 JUnit: 最著名的xUnit類的單元測試框架&#xff0c;但是不僅僅可以做單元測試。TestNG: 更強大的Java測試框架…

python連接sql數據庫_python連接sql server數據庫實現增刪改查

簡述 python連接微軟的sql server數據庫用的第三方模塊叫做pymssql&#xff08;document&#xff1a;http://www.pymssql.org/en/stable/index.html&#xff09;。在官方文檔可以看到&#xff0c;pymssql是基于_mssql模塊做的封裝&#xff0c;是為了遵守python的DBAPI規范接口.…

es5.0 安裝head插件

es5.0的安裝和之前的版本有些區別,我的電腦用plugin install 沒成功, 查了一下資料,說是可以用grunt進行安裝,啟動; 1,先安裝grunt: grunt是一個很方便的構建工具&#xff0c;可以進行打包壓縮、測試、執行等等的工作&#xff0c;5.0里的head插件就是通過grunt啟動的。 npm ins…

Django后臺項目之用戶管理功能開發流程

項目功能開發流程 1 先寫列表頁&#xff08;加載出來數據就行&#xff09; ob User_vip.objects.filter(is_del004001).order_by(-cts)2 寫添加功能 2.1 創建addOrDoadd視圖方法 2.2 添加訪問addOrDoadd的路由 2.3 在index.html頁面吧添加的按鈕的鏈接不全 <a style&…

套接字 資料查閱

(3)套接字(socket) 一個完整的網絡應用程序包括客戶端和服務器兩個部分。網間通信進程需要由兩個進程組成&#xff0c;并且只能用同一種協議。也就是說&#xff0c;不能在通信的一端使用TCP協議&#xff0c;而另一端則用UDP協議。一個完整的網絡通信需要一個五元組來標識…

linux mysql安裝_Linux下安裝mysql服務(超詳細)

Mysql數據庫的安裝對于開發者來說&#xff0c;是我們必然會面對的問題&#xff0c;它的安裝過程其實并不復雜&#xff0c;并且網絡上的安裝教程也非常多&#xff0c;但是對于新手來說&#xff0c;各種不同形式的安裝教程&#xff0c;又給新手們帶來了要選擇哪種方式進行安裝的難…

dash 和 bash 切換

#先看看是用的哪個 shellls -al /bin/sh #如果是dash&#xff0c;切換到bashsudo ln -fs /bin/bash /bin/sh轉載于:https://www.cnblogs.com/abolide/p/6874265.html

Django中使用ajax技術概述

ajax 1.什么是ajax ajax就是在不刷新整個頁面的情況下&#xff0c;去更新局部頁面的內容&#xff08;無刷新技術&#xff09; 2.ajax有什么優點 最大的一點是頁面無刷新&#xff0c;在頁面內與服務器通信&#xff0c;給用戶的體驗非常好。 使用異步方式與服務器通信&#x…