为了寻找美,我决定对美女图片进行图像边缘化处理
前言:
前幾日發表了在matlab進行簡單的圖像邊緣處理的文章,后來繼續進行了相應的學習,決定還是回歸python環境跑一下opencv進行圖像邊緣檢測的處理。對其有興趣的可以看我上一篇的博客
圖像處理邊緣處理:Roberts算子和canny算子,對圓與矩陣進行識別_靳小鍋er的博客-CSDN博客
圖像分析資料:
1.灰度圖:
灰度圖是只含有黑白顏色,和0~255亮度等級的圖片。灰度圖具有 存儲小,其亮度值就是256色調色板索引號, 從整幅圖像的整體和局部的色彩以及亮度等級分布特征來看,灰度圖描述與彩色圖的描述是一致的特點。因此很多真彩色圖片的分析,第一步就是轉換為灰度圖,然后再進行分析。
2. Sobel算子
sobel算子主要用于獲得數字圖像的一階梯度,常見的應用和物理意義是邊緣檢測。
算子使用兩個33的矩陣(圖1)算子使用兩個33的矩陣(圖1)去和原始圖片作卷積,分別得到橫向G(x)和縱向G(y)的梯度值,如果梯度值大于某一個閾值,則認為該點為邊緣點
3.拉普拉斯算子
在圖像處理,我們知道經常把Laplace算子作為邊緣檢測之一,也是工程數學中常用的一種積分變換。將原始圖像通過拉普拉斯變換后增強了圖像中灰度突變處的對比度,使圖像中小的細節部分得到增強并保留了圖像的背景色調,使圖像的細節比原始圖像更加清晰。基于拉普拉斯變換的圖像增強已成為圖像銳化處理的基本工具。
4.Canny算子
Canny邊緣檢測的效果是很顯著的。相比普通的梯度算法大大抑制了噪聲引起的偽邊緣,而且是邊緣細化,易于后續處理。對于對比度較低的圖像,通過調節參數,Canny算法也能有很好的效果。
代碼部分:
import cv2 import matplotlib.pyplot as plt #讀取圖像信息 img0 = cv2.imread('C:\\Users\\Lenovo\\Desktop\\Pic1_2.jpg') img1 = cv2.resize(img0, dsize=None, fx = 0.5, fy = 0.5) img2 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) cv2.imwrite('C:\\Users\\Lenovo\\Desktop\\Gray.jpg',img2) #保存灰度圖 h, w = img1.shape[:2] print(h, w) cv2.namedWindow("GREY") cv2.imshow("GREY", img1) cv2.waitKey(delay = 0) #Sobel 算子 img3 = cv2.Sobel (img2, cv2.CV_64F, 0, 1, ksize=5) cv2.namedWindow("Sobel") cv2.imshow("Sobel", img3) cv2.waitKey(delay = 0) #Laplacian 算子 img7 = cv2.Laplacian(img2, cv2.CV_64F) cv2.namedWindow("Laplacian") cv2.imshow("Laplacian", img7) cv2.waitKey(delay = 0) #canny 算子 img4 = cv2.Canny(img2, 100, 200) cv2.namedWindow("Canny") cv2.imshow("Canny", img4) cv2.waitKey(delay = 0)撰寫代碼時遇到的問題:
CV讀取圖片所在位置失敗:
解決方法:Python 中 'unicodeescape' codec can't decode bytes in position XXX: trun錯誤解決方案_一路彷徨的專欄-CSDN博客_unicodeescape
代碼效果展示:
?
總結
以上是生活随笔為你收集整理的为了寻找美,我决定对美女图片进行图像边缘化处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021华为杯数学建模“空气质量预报二次
- 下一篇: AI二次开发C#使用RGBColor