使用OpenCV-Python實現圖像讀入、顯示與保存:
# -*- coding: utf-8 -*-
import cv2
from matplotlib import pyplot as plt
# # 第二個參數,0為灰度模式顯示,1為彩色圖像,默認值為1
# img0 = cv2.imread(r'D:\OpenCV_Python\chepai.jpg', 0)
# img1 = cv2.imread(r'D:\OpenCV_Python\chepai.jpg', 1)
# 或者如下:
img0 = cv2.imread(r'D:\OpenCV_Python\chepai.jpg', cv2.IMREAD_GRAYSCALE)
img1 = cv2.imread(r'D:\OpenCV_Python\chepai.jpg', cv2.IMREAD_COLOR)
# using opencv to show image
cv2.imshow('grayImage', img0)
cv2.imshow('bgrImage', img1)
k = cv2.waitKey(0)
if k == 27: # wait for Esc key to exit
cv2.destroyAllWindows()
elif k == ord('s'):
cv2.imwrite('chepai_grayimage.jpg', img0) # wait for 's' key to save and exit
cv2.destroyAllWindows()
# using matplotlib to show image
# plt.imshow(img0, cmap='gray', interpolation='bicubic')
# plt.xticks([]), plt.yticks([]) # to hide tick values on X and Y axis
# plt.show()
注意: OpenCV 加載的彩色圖像是 BGR 模式,但?Matplotib 是 RGB模式。所以彩色圖像如果已經被 OpenCV 讀入,那它將不會被 Matplotib 正確顯示。如下圖所示,同一幅彩色圖像,由OpenCV讀入,左邊圖像由cv2.imshow()函數顯示,為正常顏色;右邊圖像調用Matplotib的函數顯示,顏色明顯不對。
由于很多時候要用到matplotlib操作圖像,因此就需要解決 彩色圖像由BGR模式轉RGB模式 的問題。在網上搜索了下,找到以下幾種解決方法:
# 方法一
b, g, r = cv2.split(img)
img1 = cv2.merge([r, g, b])
# 方法二
img2 = img[:, :, :: -1]? ?或者? ?img2 = img[..., :: -1]
# 方法三
img3 = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
下面的代碼應用以上方法,做出驗證:
import cv2
from matplotlib import pyplot as plt
# 由OpenCV讀入彩色圖像
img = cv2.imread(r'D:\OpenCV_Python\chepai.jpg')
# 方法一
b, g, r = cv2.split(img)
img1 = cv2.merge([r, g, b])
# 方法二
img2 = img[:, :, :: -1]
# img2 = img[..., :: -1]
# 方法三
img3 = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# 調用matplotlib顯示
plt.subplot(221); plt.imshow(img)
plt.subplot(222); plt.imshow(img1)
plt.subplot(223); plt.imshow(img2)
plt.subplot(224); plt.imshow(img3)
plt.show()
由上圖可知,三種方法都可以解決 彩色圖像由BGR模式轉RGB模式的問題。
參考文獻:https://stackoverflow.com/questions/15072736/extracting-a-region-from-an-image-using-slicing-in-python-opencv/15074748#15074748
(注:原圖像來源于網絡,侵刪)
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
