3段Python图像处理的实用代码的分享

作者:??Python编程学习圈???? 时间:2021-10-19 08:06:58 

前言

今天给大家分析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:

3段Python图像处理的实用代码的分享

将照片变成素描风格

我们最终要实现的目的在于将照片变成素描风格,大致的逻辑在于首先需要将图片变成灰 * 像然后反转,在反转之后进行模糊化处理,代码如下:

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:

3段Python图像处理的实用代码的分享

判断形状

现在我们需要来判断图片当中图形的轮廓,而识别轮廓的算法在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图像处理的实用代码的分享

是不是简单又实用?

来源:https://juejin.cn/post/7103344136819834916

标签:Python,图像,处理
0
投稿

猜你喜欢

  • 网页设计三剑客

    2010-08-31 17:05:00
  • JSP 注释的详解及简单实例

    2023-07-21 06:15:35
  • Python线程条件变量Condition原理解析

    2022-07-23 02:52:06
  • 教程:纯CSS作的小灯笼效果

    2008-08-26 17:22:00
  • ORACLE 常用的SQL语法和数据对象

    2009-02-26 10:58:00
  • pytorch下的unsqueeze和squeeze的用法说明

    2023-07-16 14:01:41
  • 如何修改MySQL 5.1 data文件夹路径

    2010-10-25 19:58:00
  • 如何创建一个对索引服务器进行查询的ASP页面?

    2009-11-14 20:54:00
  • C#调用Python脚本的简单示例

    2021-04-03 13:22:25
  • 简洁的是最好的吗?

    2010-06-24 21:46:00
  • 微软建议的ASP性能优化28条守则(8)

    2005-05-30 16:04:00
  • php中-> 、=>、::、$this->四种常见符号使用方法技巧

    2023-05-30 07:46:24
  • selenium+python自动化测试之页面元素定位

    2021-09-30 18:08:55
  • 轻松掌握执行一个安全的SQL Server安装

    2009-01-13 14:03:00
  • php对数字进行万、亿单位的转化

    2023-06-24 08:34:32
  • python调用pyaudio使用麦克风录制wav声音文件的教程

    2023-12-16 13:32:15
  • Python代码调试的几种方法总结

    2022-06-14 18:21:27
  • CSS Sprites (CSS图像拼合技术)教程工具

    2009-05-26 15:30:00
  • Python if语句知识点用法总结

    2022-01-03 06:43:14
  • 使用python 获取进程pid号的方法

    2023-06-11 21:25:52
  • asp之家 网络编程 m.aspxhome.com