700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python+opencv+图像特效(图像灰度处理 颜色翻转 图片融合 边缘检测 浮雕效果 颜色映射)

python+opencv+图像特效(图像灰度处理 颜色翻转 图片融合 边缘检测 浮雕效果 颜色映射)

时间:2018-12-26 19:33:59

相关推荐

python+opencv+图像特效(图像灰度处理 颜色翻转 图片融合 边缘检测 浮雕效果 颜色映射)

原图

图像灰度处理

#方式1import cv2#读取彩色原图img0=cv2.imread('E:/python_cv/01.jpg',1)#读取灰度图img1=cv2.imread('E:/python_cv/01.jpg',0)print(img0.shape)print(img1.shape)cv2.imshow('gary',img1)cv2.waitKey(0)

#方式2import cv2#读取彩色原图src=cv2.imread('E:/python_cv/01.jpg',1)dst=cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)cv2.imshow('gary',dst)cv2.waitKey(0)

#方式3import cv2import numpy as npimg=cv2.imread('E:/python_cv/01.jpg',1)img_info=img.shapeimage_height=img_info[0]image_weight=img_info[1]dst=np.zeros((image_height,image_weight,3),np.uint8)#当彩色图像三个通道的值都相同时,即为灰度图像for i in range(image_height):for j in range(image_weight):(b,g,r)=img[i][j]gray=(int(b)+int(g)+int(r))/3 #防止越界,转换类型dst[i,j]=np.uint8(gray)cv2.imshow('gary',dst)cv2.waitKey(0)

#方式4import cv2import numpy as npimg=cv2.imread('E:/python_cv/01.jpg',1)img_info=img.shapeimage_height=img_info[0]image_weight=img_info[1]dst=np.zeros((image_height,image_weight,3),np.uint8)#当彩色图像三个通道的值都相同时,即为灰度图像for i in range(image_height):for j in range(image_weight):(b,g,r)=img[i][j]gray=0.299*int(b)+0.587*int(g)+0.114*int(r)dst[i,j]=np.uint8(gray)cv2.imshow('gary',dst)cv2.waitKey(0)

灰度处理很重要,也是图像处理中的基础操作,在实际运用中要求实时性,涉及优化,比如:

定点操作比浮点操作要快+-比*/快,移位比*/快

import cv2import numpy as npimg=cv2.imread('E:/python_cv/01.jpg',1)img_info=img.shapeimage_height=img_info[0]image_weight=img_info[1]dst=np.zeros((image_height,image_weight,3),np.uint8)#当彩色图像三个通道的值都相同时,即为灰度图像for i in range(image_height):for j in range(image_weight):(b,g,r)=img[i][j]# gray=0.299*int(b)+0.587*int(g)+0.114*int(r)#优化b=int(b)g=int(g)r=int(r)# gray=(b+2*g+r)/4gray=(b+(g<<1)+r)>>2dst[i,j]=np.uint8(gray)cv2.imshow('gary',dst)cv2.waitKey(0)

颜色翻转

灰度图像素值为0到255,若当前的像素值为i,翻转过后为255-i

import cv2import numpy as np#读取彩色原图src=cv2.imread('E:/python_cv/01.jpg',1)gray=cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)img_info=src.shapeimage_height=img_info[0]image_weight=img_info[1]dst=np.zeros((image_height,image_weight,1),np.uint8)for i in range(image_height):for j in range(image_weight):grayPixel=gray[i][j]dst[i][j]=255-grayPixelcv2.imshow('gary',dst)cv2.waitKey(0)

彩色图反转

import cv2import numpy as np#读取彩色原图src=cv2.imread('E:/python_cv/01.jpg',1)img_info=src.shapeimage_height=img_info[0]image_weight=img_info[1]dst=np.zeros((image_height,image_weight,3),np.uint8)for i in range(image_height):for j in range(image_weight):(b,g,r)=src[i][j]dst[i][j]=(255-b,255-g,255-r)cv2.imshow('src',src)cv2.imshow('dst',dst)cv2.waitKey(0)

图片融合

import cv2import numpy as np#读取彩色原图src=cv2.imread('E:/python_cv/01.jpg',1)src1=cv2.imread('E:/python_cv/02.jpg',1)img_info=src.shapeimage_height=img_info[0]image_weight=img_info[1]roi_h=int(image_height/2)roi_w=int(image_weight/2)src_roi=src[0:roi_h,0:roi_w]src1_roi=src1[0:roi_h,0:roi_w]dst=np.zeros((roi_h,roi_w,3),np.uint8)dst=cv2.addWeighted(src_roi,0.5,src1_roi,0.5,0)cv2.imshow('dst',dst)cv2.waitKey(0)

canny 边缘检测

步骤:灰度图,高斯滤波,canny

import cv2import numpy as npgray=cv2.imread('E:/python_cv/01.jpg',0)img=cv2.GaussianBlur(gray,(3,3),0)dst=cv2.Canny(img,50,50)cv2.imshow('gray',gray)cv2.imshow('gauss',img)cv2.imshow('dst',dst)cv2.waitKey(0)

soble边缘检测

import cv2import numpy as npimport mathgray=cv2.imread('E:/python_cv/01.jpg',0)imgInfo=gray.shapeheight=imgInfo[0]weight=imgInfo[1]cv2.imshow('src',gray)dst=np.zeros((height,weight,1),np.uint8)'''sobel1.算子模板 2.图像卷积 3.阈值判决竖直模板水平模板[1 2 1 [1 0 -10 0 0 2 0 -2-1-2-1] 1 0 -1]'''for i in range(0,height-2):for j in range(0,weight-2):gy=gray[i,j]*1+gray[i,j+1]*2+gray[i,j+2]*1-gray[i+2,j]-2*gray[i+2,j+1]-gray[i+2,j+2]*1gx=gray[i,j]*1-gray[i,j+2]+gray[i+1,j]*2-2*gray[i+1,j+2]+gray[i+2,j]-gray[i+2,j+2]grad=math.sqrt(gx*gx+gy*gy)if grad>50:dst[i,j]=255else:dst[i,j]=0cv2.imshow('dst',dst)cv2.waitKey(0)

import cv2import numpy as npgray=cv2.imread('E:/python_cv/01.jpg',0)imgInfo=gray.shapeheight=imgInfo[0]weight=imgInfo[1]#浮雕效果dst=np.zeros((height,weight,1),np.uint8)for i in range(0,height):for j in range(0,weight-1):gray0=gray[i,j]gray1=gray[i,j+1]newp=gray0-gray1+150if newp>255:newp=255else:newp=0dst[i,j]=newpcv2.imshow('dst',dst)cv2.waitKey(0)

风格转换

import cv2import numpy as npimg=cv2.imread('E:/python_cv/01.jpg',1)imgInfo=img.shapeheight=imgInfo[0]weight=imgInfo[1]cv2.imshow('src',img)'''颜色风格,rgb-->RGBb=b*1.5g=g*1.3'''dst=np.zeros((height,weight,3),np.uint8)for i in range(0,height):for j in range(0,weight):(b,g,r)=img[i,j]b=1.5*bg=1.3*gif b>255:b=255if g>255:g=255dst[i,j]=(b,g,r)cv2.imshow('dst',dst)cv2.waitKey(0)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。