简单图像处理(opencv-python入门)
2020-04-09 12:41
323 查看
本文主要内容:
负片、调节图片亮度与对比度、图像裁剪、图像尺寸变换、图像旋转、图像添加噪声、图像模糊与滤波
所有代码已经在Spyder上编译通过的,python版本是3.7,希望能有帮助
参考书目:《Python人脸识别——从入门到工程实践》王天庆著
1.负片(相机底片)
import cv2 import numpy as np img=cv2.imread("1.png") cv2.imshow("lala",img) cv2.waitKey(1000) print(img) height=img.shape[0] width=img.shape[1] negative_file=np.zeros((height,width,3)) b,g,r=cv2.split(img) r=255-r b=255-b g=255-g negative_file[:,:,0]=b negative_file[:,:,1]=g negative_file[:,:,2]=r cv2.imwrite("negative.jpg",negative_file) img2=cv2.imread("negative.jpg") cv2.imshow("fupian",img2) cv2.waitKey(2000) cv2.destroyAllWindows();
2.调节图片亮度与对比度
import cv2 import numpy as np def convert_img1(img,alpha,beta): blank=np.zeros(img.shape,img.dtype) return cv2.addWeighted(img,alpha,blank,0,beta) def convert_img2(img,alpha,beta): rows,cols,channel=img.shape new_img=np.zeros(img.shape,img.dtype) for i in range(0,rows): for j in range(0,cols): for k in range(0,channel): new_img[i,j,k]=np.clip(alpha *img[i,j,k]+beta,0,255) return new_img img=cv2.imread('1.png') cv2.imshow('old',img) cv2.waitKey(1000) cv2.imwrite('convert3.jpg',convert_img1(img,1.5,50)) img1=cv2.imread('convert3.jpg') cv2.imshow('convert',img1) cv2.waitKey(2000) cv2.destroyAllWindows()
3.图像裁剪
import cv2 #import numpy as np image=cv2.imread('1.png') cv2.imshow('lena',image) cv2.waitKey(1000) cv2.imshow('lena2',image[50:400,50:400]) cv2.waitKey(5000) cv2.destroyAllWindows()
4.图像尺寸变换(3种)
import cv2 #import numpy as np image=cv2.imread('1.png') cv2.imshow('lena',image) cv2.waitKey(1000) new_img1=cv2.resize(image,(200,200),interpolation=cv2.INTER_AREA) cv2.imshow('lena1',new_img1) cv2.waitKey(1000) new_img2=cv2.resize(image,(200,200),interpolation=cv2.INTER_CUBIC) cv2.imshow('lena2',new_img2) cv2.waitKey(1000) new_img3=cv2.resize(image,(200,200),interpolation=cv2.INTER_LINEAR) cv2.imshow('lena3',new_img3) cv2.waitKey(10000) cv2.destroyAllWindows()
5.图像旋转
import cv2 #import numpy as np image=cv2.imread('1.png') cv2.imshow('lena',image) cv2.waitKey(1000) rotate_img=cv2.getRotationMatrix2D((image.shape[1]/2,image.shape[0]/2),45,0.5) rmg = cv2.warpAffine(image, rotate_img, (image.shape[0], image.shape[1])) cv2.imwrite('rotate_img.jpg',rmg) image2=cv2.imread('rotate_img.jpg') cv2.imshow('lena1',image2) cv2.waitKey(5000)
6.图像添加噪声(椒盐噪声、高斯噪声)
import cv2 import numpy as np import random def salt_and_pepper_noise(img,percentage): rows,cols=img.shape num=int(percentage*rows*cols) for i in range(num): x=random.randint(0,rows-1) y=random.randint(0,cols-1) if random.randint(0,1)==1: img[x,y]=0 else: img[x,y]=255 return img def gaussian_noise(img,mu,sigma,k): rows,cols=img.shape for i in range(rows): for j in range(cols): value=int(img[i,j]+k *random.gauss(mu=mu,sigma=sigma)) value=np.clip(a_max=255,a_min=0,a=value) img[i,j]=value return img image=cv2.imread('1.png') gray_img=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) cv2.imshow('gray_lena',gray_img) cv2.waitKey(1000) gray_img2=gray_img.copy() gaus_img=gaussian_noise(gray_img,0,1,32) cv2.imshow('gaus_lena',gaus_img) cv2.waitKey(1000) salt_img=salt_and_pepper_noise(gray_img2,0.3) cv2.imshow('salt_lena',salt_img) cv2.waitKey(1000)
7.图像模糊与滤波
import cv2 import numpy as np import random def salt_and_pepper_noise(img,percentage): rows,cols=img.shape num=int(percentage*rows*cols) for i in range(num): x=random.randint(0,rows-1) y=random.randint(0,cols-1) if random.randint(0,1)==1: img[x,y]=0 else: img[x,y]=255 return img def gaussian_noise(img,mu,sigma,k): rows,cols=img.shape for i in range(rows): for j in range(cols): value=int(img[i,j]+k *random.gauss(mu=mu,sigma=sigma)) value=np.clip(a_max=255,a_min=0,a=value) img[i,j]=value return img image=cv2.imread('1.png') gray_img=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) cv2.imshow('gray_lena',gray_img) cv2.waitKey(1000) gray_img2=gray_img.copy() gaus_img=gaussian_noise(gray_img,0,1,32) cv2.imshow('gaus_lena',gaus_img) cv2.waitKey(1000) salt_img=salt_and_pepper_noise(gray_img2,0.3) cv2.imshow('salt_lena',salt_img) cv2.waitKey(1000) kernel=np.ones((5,5),np.float32)/25 conv_2d_img=cv2.filter2D(salt_img,-1,kernel) cv2.imshow('conv_2d',conv_2d_img) cv2.waitKey(1000) median_img=cv2.medianBlur(salt_img,5) cv2.imshow('median_blur',median_img) cv2.waitKey(1000) gaussian_img=cv2.GaussianBlur(gaus_img,(5,5),0) cv2.imshow('guass_blur',gaussian_img) cv2.waitKey(1000) bilateral_img=cv2.bilateralFilter(gaus_img,9,75,75) cv2.imshow('bilateral_filter',bilateral_img) cv2.waitKey(8000) cv2.destroyAllWindows()
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- OpenCV入门:简单图像处理实例——平滑滤波
- Python3与OpenCV3.3 图像处理(一)--环境搭建与简单DEMO
- [Python图像处理] 一.图像处理基础知识及OpenCV入门函数
- Python入门学习 part 3 :OpenCV图像简单操作
- python深度学习库pytorch::transforms练习:opencv,scikit-image,PIL图像处理库比较
- opencv 入门教程, ubuntu安装,及python 下简单使用
- win10+Python3.7.3+OpenCV3.4.1入门学习(十三 直方图处理)————13.3 使用OpenCV绘制直方图
- OpenCV入门(二) 图像平滑处理
- opencv-python 学习笔记1:简单的图片处理
- Python(1):简单图像处理(图片->二进制->图片)
- 用python简单处理图片(2):图像通道\几何变换\裁剪
- Python之简单的图像处理
- 用python简单处理图片(1):打开\显示\保存图像
- Python图像处理库(PIL)的安装与简单使用
- Python-OpenCV 处理图像(二)(三):滤镜和图像运算 图像像素点操作
- Python OpenCV Tutorial Introduction图像处理教程
- python 简单图像处理(8) 直方图均衡化
- 【OpenCV入门教程之十一】 形态学图像处理(二):开运算、闭运算、形态学梯度、顶帽、黑帽合辑
- python 简单图像处理(4) 旋转
- OpenCV入门学习(一)图像放缩【简单的按比例放缩,无技术含量】