值得收藏,分享3个的 Python 实战项目
大家好,今天我來(lái)給大家介紹3個(gè)干貨滿(mǎn)滿(mǎn)的計(jì)算機(jī)視覺(jué)方向的Python實(shí)戰(zhàn)項(xiàng)目,主要用到的庫(kù)有
-
opencv-python
-
numpy
-
pillow
要是大家所配置的環(huán)境當(dāng)中沒(méi)有這幾個(gè)模塊的話(huà),就需要先用pip命令下載安裝。更多技術(shù)干貨,文末提交交流方式
pip install opencv-python numpy pillow邊緣檢測(cè)
邊緣檢測(cè)的基本思想就是簡(jiǎn)化圖像信息,使用邊緣線(xiàn)代表圖像所攜帶信息,而這次我們要用到的則是Canny邊緣檢測(cè)算子,在Opencv當(dāng)中需要調(diào)用的是cv.canny()方法即可,代碼如下
import cv2 as cv import matplotlib.pyplot as pltimg = cv.imread('導(dǎo)入圖像的路徑',0) edges = cv.Canny(img,100,200) plt.subplot(121) plt.imshow(img, cmap='gray') ......... plt.show()output
將照片變成素描風(fēng)格
我們最終要實(shí)現(xiàn)的目的在于將照片變成素描風(fēng)格,大致的邏輯在于首先需要將圖片變成灰色圖像然后反轉(zhuǎn),在反轉(zhuǎn)之后進(jìn)行模糊化處理,代碼如下
import cv2 img = cv2.imread("導(dǎo)入照片的路徑")## 將照片灰度化處理 gray_image = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) ## 將灰度化的照片反轉(zhuǎn)處理 inverted_gray_image = 255-gray_image ## 將反轉(zhuǎn)的照片模糊化處理 blurred_inverted_gray_image = cv2.GaussianBlur(inverted_gray_image, (19,19),0) ## 再一次的進(jìn)行反轉(zhuǎn) 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
判斷形狀
現(xiàn)在我們需要來(lái)判斷圖片當(dāng)中圖形的輪廓,而識(shí)別輪廓的算法在opencv模塊當(dāng)中是有內(nèi)置的,代碼如下
import cv2 import numpy as np from matplotlib import pyplot as plt# 導(dǎo)入照片 img = cv2.imread('3.png') # 將照片灰度化處理,當(dāng)然要是您的照片已經(jīng)是黑白的,就可以跳過(guò)這一步 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # setting threshold of the gray image _, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)# 識(shí)別輪廓的方法 contours, _ = cv2.findContours(threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)i = 0 for contour in contours:# cv2.approxPloyDP() function to approximate the shapeapprox = cv2.approxPolyDP(contour, 0.01 * cv2.arcLength(contour, True), True)# 找到圖片的中心點(diǎn)M = cv2.moments(contour)if M['m00'] != 0.0:x = int(M['m10'] / M['m00'])y = int(M['m01'] / M['m00'])# 將輪廓的名字放在各個(gè)圖形的中央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:......# 將最后的圖形呈現(xiàn)出來(lái) cv2.imshow('shapes', img) cv2.waitKey(0) cv2.destroyAllWindows()output
技術(shù)交流
歡迎轉(zhuǎn)載、收藏、有所收獲點(diǎn)贊支持一下!
目前開(kāi)通了技術(shù)交流群,群友已超過(guò)2000人,添加時(shí)最好的備注方式為:來(lái)源+興趣方向,方便找到志同道合的朋友
- 方式①、發(fā)送如下圖片至微信,長(zhǎng)按識(shí)別,后臺(tái)回復(fù):加群;
- 方式②、添加微信號(hào):dkl88191,備注:來(lái)自CSDN
- 方式③、微信搜索公眾號(hào):Python學(xué)習(xí)與數(shù)據(jù)挖掘,后臺(tái)回復(fù):加群
總結(jié)
以上是生活随笔為你收集整理的值得收藏,分享3个的 Python 实战项目的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux 中用PPA安装软件
- 下一篇: websocket python爬虫_p