這篇文章主要介紹了Python+OpenCV中圖片局部區域像素值處理的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
圖片本就是數組形式,對于8位灰度圖,通道數為1,它就是個二位數組,這樣就沒有必要再設置ROI區域,復制出來這塊區域再循環提取像素存入數組進行處理了,可以直接將圖片存入數組,再利用numpy進行切分相應的數組操作就可以了。
ps:這次我重新裝的opencv3.2.0版本,代碼里面直接用cv2了
# 查看opencv版本,終端輸入: $ pkg-config --modversion opencv
cv_img_cv2.py
# -*- coding:utf-8 -*- __author__ = 'lwp' import cv2 import numpy as np import matplotlib.pyplot as plt path ='/media/lwp/A/111111.jpg' # 圖片路徑 lwpImg = cv2.imread(path) # 加載圖片 gray_lwpImg = cv2.cvtColor(lwpImg, cv2.COLOR_BGR2GRAY) # 轉為灰度圖 # 畫目標區域,參數分別為圖片、左上坐標、右下坐標、框的顏色、框線條的粗細 lwpImg = cv2.rectangle(lwpImg, (290, 0), (310, 327), (0, 255, 0), 2) # 顯示標記后的圖片 cv2.imshow('local_pixel', lwpImg) # 提取圖片像素值到矩陣 pixel_data = np.array(gray_lwpImg) # 提取目標區域 box_data = pixel_data[:, 290:310] # 矩陣行求和 pixel_sum = np.sum(box_data, axis=1) # 畫圖 x = range(576) fig = plt.figure(figsize=(4, 2)) ax1 = fig.add_subplot(1, 1, 1) ax1.bar(x, pixel_sum, width=1) # x為每個條形到x軸0點的距離,width為每個條的寬度 plt.xlabel('X') plt.ylabel('Y') plt.title('edge_filter') plt.grid(True) plt.show() key = cv2.waitKey(0) & 0xFF if key == ord('q'): # 按q關閉窗口 cv2.destroyAllWindows()
效果:
感謝你能夠認真閱讀完這篇文章,希望小編分享的“Python+OpenCV中圖片局部區域像素值處理的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。