3段Python图像处理的实用代码的分享
目录
- 前言
- 边缘检测
- 将照片变成素描风格
- 判断形状
前言
今天给大家分析3个计算机视觉方向的Python
实用代码,主要用到的库有:
- opencv-python
- numpy
- pillow
要是大家所配置的环境当中没有这几个模块的话,可先用pip
命令下载安装:
pip install opencv-python numpy pillow
边缘检测
边缘检测的基本思想就是简化图像信息,使用边缘线代表图像所携带信息,而这次我们要用到的则是Canny
边缘检测算子,在Opencv
当中需要调用的是cv.canny()
方法即可,代码如下:
import cv2 as cv import matplotlib.pyplot as plt img = cv.imread('导入图像的路径',0) edges = cv.Canny(img,100,200) plt.subplot(121) plt.imshow(img, cmap='gray') ......... plt.show()
output:
将照片变成素描风格
我们最终要实现的目的在于将照片变成素描风格,大致的逻辑在于首先需要将图片变成灰色图像然后反转,在反转之后进行模糊化处理,代码如下:
import cv2 img = cv2.imread("导入照片的路径") ## 将照片灰度化处理 gray_image = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) ## 将灰度化的照片反转处理 inverted_gray_image = 255-gray_image ## 将反转的照片模糊化处理 blurred_inverted_gray_image = cv2.GaussianBlur(inverted_gray_image, (19,19),0) ## 再一次的进行反转 inverted_blurred_image = 255-blurred_inverted_gray_image ### 颜色减淡混合处理 sketck = cv2.divide(gray_image, inverted_blurred_image,scale= 256.0) cv2.imshow("Original Image",img) cv2.imshow("Pencil Sketch", sketck) cv2.waitKey(0)
output:
判断形状
现在我们需要来判断图片当中图形的轮廓,而识别轮廓的算法在opencv
模块当中是有内置的,代码如下:
import cv2 import numpy as np from matplotlib import pyplot as plt # 导入照片 img = cv2.imread('3.png') # 将照片灰度化处理,当然要是您的照片已经是黑白的,就可以跳过这一步 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # setting threshold of the gray image _, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 识别轮廓的方法 contours, _ = cv2.findContours( threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) i = 0 for contour in contours: # cv2.approxPloyDP() function to approximate the shape approx = cv2.approxPolyDP(contour, 0.01 * cv2.arcLength(contour, True), True) # 找到图片的中心点 M = cv2.moments(contour) if M['m00'] != 0.0: x = int(M['m10'] / M['m00']) y = int(M['m01'] / M['m00']) # 将轮廓的名字放在各个图形的中央 if len(approx) == 3: cv2.putText(img, 'Triangle', (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 0, 0), 2) elif len(approx) == 4: ....... elif len(approx) == 5: ...... elif len(approx) == 6: ...... else: ...... # 将最后的图形呈现出来 cv2.imshow('shapes', img) cv2.waitKey(0) cv2.destroyAllWindows()
output:
是不是简单又实用?
到此这篇关于3段Python图像处理的实用代码的分享的文章就介绍到这了,更多相关Python图像处理内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
赞 (0)