数字图像处理之图像基础
生活随笔
收集整理的這篇文章主要介紹了
数字图像处理之图像基础
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近在學數字圖像處理,圖像基礎包括以下部分:
導入庫
圖片展示函數
def show(img):if img.ndim == 2:plt.imshow(img,cmap='gray')else:plt.imshow(cv.cvtColor(img,cv.COLOR_RGB2BGR))plt.show()圖像的矩陣表示
A = np.random.randint(0,256,(2,4),dtype=np.uint8) print(A) show(A) B = np.random.randint(0,256,(2,4,3),dtype=np.uint8) print(B) show(B)結果如下圖所示:
通道合并與分離
img = cv.imread('C:\PerfLogs\pc.jpg') b,g,r = cv.split(img)#分離 show(b) show(g) show(r) img_new = cv.merge([b,g,r])#合并通道分離后的三通道顯示出來的圖像
合并后的圖片為:
彩色圖轉灰度圖
gray1 = 0.299*b + 0.587*g + 0.114*r #opencv自己提供的函數實現彩色圖轉灰度圖 img_gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY) show(np.hstack([gray1,img_gray])圖像的二值化
thresh = 125 gray2[gray2>thresh] = 255 gray2[gray2<=thresh] = 0 #opencv自帶的函數 ignore,img_bin = cv.threshold(gray2,125,200,cv.THRESH_BINARY)兩圖像的加減乘除
#圖片的加載+調整圖片大小 obj = cv.imread('C:\PerfLogs\pc.jpg',0) obj = cv.resize(obj,(550,550),)#調整圖片大小 bg = cv.imread('C:\PerfLogs\pc1.jpg',0) bg = cv.resize(bg,(550,550),) mask = cv.imread('C:\PerfLogs\pc2.jpg',0) mask = cv.resize(mask,(550,550),) noise = cv.imread('C:\PerfLogs\pc3.jpg',0) noise = cv.resize(noise,(550,550),)圖像根據一定比例相加
img_add1 = cv.add(noise*0.5,bg*0.5) img_add2 = cv.addWeighted(noise,0.5,bg,0.5,0)#opencv自帶的函數 show(np.hstack([img_add1,img_add2]))
兩圖像相減
兩圖像相乘
兩圖像相除
(不知道弄了啥)
圖像的線性和非線性變換
圖像的線性變換
圖像的非線性變換
由三張圖片對比可得,冪次越小,圖片越亮,冪次越大,圖片越暗。符合如下的圖像。
總結
以上是生活随笔為你收集整理的数字图像处理之图像基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win10打开软件时老是弹出提示窗口怎么
- 下一篇: sql格式化工具