生活随笔
收集整理的這篇文章主要介紹了
016-OpenCV 图像对比度亮度调整
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
學得不好,想到哪,寫到哪。
先說一個蠢得要命的問題。
就這,研究了好久,才突然發現應該是img[i, j],不是[i:j],被自己蠢到哭,服了自己。以后寫代碼一定要注意細節!!!
接下來進入主題,上代碼。
import cv2
def nothing(a
):pass''' cv2.imread(filename,flags)
# filename為文件名,圖片與.py文件在一個文件夾時輸入文件名即可
# 不在一個文件夾時輸入圖片的路徑和名字
# flags為圖片的顏色類型,默認為1,灰度圖像為0
'''
img
= cv2
.imread
('1.jpg', 0)
'''np.copy()
# 數組拷貝,理解成備份原圖像就行
# 原圖像img, 備份圖像img1
# 原圖像隨便改,備份圖像還是初始的原圖像
'''
backup
= img
.copy
()
'''
cv2.namedWindow(winname,flags)
# winname是窗口名字
# flags為窗口顯示方式,cv2.WINDOW_NORMAL為正常顯示,可以調整大小
# cv2.WINDOW_AUTOSIZE顯示原圖片的大小,用戶不能調整大小
'''
cv2
.namedWindow
('backup')
'''cv2.createTrackbar(trackbarname, windowname, value, count, onChange)
# 創建一個滑動條
# trackbarname 滑動條的名字 windowname 滑動條所在窗口的名字
# value 滑動塊所在位置 count 滑動塊最大位置,最小默認為0
# onChange 回調函數名
'''
cv2
.createTrackbar
('contrast', 'backup', 100, 500, nothing
)
cv2
.createTrackbar
('brightness', 'backup', 0, 255, nothing
)
while True:'''cv2.imshow(winname,mat)# winname為顯示的窗口# mat 需要顯示的圖像'''cv2
.imshow
('img', img
)'''cv2.getTrackbarPos(trackbarname, winname)# 作用就是獲得當前滑動塊的位置# trackbarname 滑動條的名字 windowname 滑動條所在窗口的名字'''contrast
= cv2
.getTrackbarPos
('contrast', 'backup')brightness
= cv2
.getTrackbarPos
('brightness', 'backup')for i
in range(0, img
.shape
[0]): for j
in range(0, img
.shape
[1]): '''對比度亮度調整原理:@#¥%……&……%¥#¥%……&*&……%#¥%……&# 簡單一句話, y = a*x +b# y 調整后的像素 a 增益,控制圖像對比度# x 圖像原像素 b 偏置,控制圖像亮度# 得有溢出保護,畢竟單個像素值最大為255,當計算結果大于255時,變為255'''if int(img
[i
, j
] * contrast
* 0.01 + brightness
) > 255:backup
[i
, j
] = 255else:backup
[i
, j
] = int(img
[i
, j
] * contrast
* 0.01 + brightness
)cv2
.imshow
('backup', backup
)if cv2
.waitKey
(1) & 0xFF == 27:break
cv2
.destroyAllWindows
()
結果如下圖,可見二者亮度對比度不同。
總結
以上是生活随笔為你收集整理的016-OpenCV 图像对比度亮度调整的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。