python 對圖片做垂直投影


Python 對圖片做垂直投影

本文利用opencv對圖片進行垂直投影,做出垂直投影圖,大體思路:打開圖片,灰度化,二值化,按列進行統計,新建一個大小和原圖一樣的圖片,按列進行填充:

  • cv2.cv.Get2D(cv2.cv.fromarray(img), y, x) 獲取物理坐標為(y,x)處的灰度值
  • cv2.cv.Set2D(cv2.cv.fromarray(img), y, x,(255, 255, 255)) 設置某一位置處rgb值

實現

例如:

# -*-coding:utf-8-*- import cv2 import numpy as np # 灰度化讀取圖片 image = cv2.imread('10.bmp', 0) # cv2.imshow('aa',image) # cv2.waitKey(0) # 將圖片二值化 retval, img = cv2.threshold(image, 170, 255, cv2.THRESH_BINARY_INV) # cv2.imshow('aa',img) # cv2.waitKey(0) # 創建一個空白圖片(img.shape[0]為height,img.shape[1]為width) paintx = np.zeros(img.shape, np.uint8) # 將新圖像數組中的所有通道元素的值都設置為0 cv2.cv.Zero(cv2.cv.fromarray(paintx)) # 創建width長度都為0的數組 w = [0] * image.shape[1] print w # 對每一行計算投影值 for x in range(image.shape[1]): for y in range(image.shape[0]): t = cv2.cv.Get2D(cv2.cv.fromarray(img), y, x) if t[0]== 0: w[x] += 1 # 繪制垂直投影圖 for x in range(image.shape[1]): for y in range(w[x]): # 把為0的像素變成白 cv2.cv.Set2D(cv2.cv.fromarray(paintx), y, x,(255, 255, 255)) # 顯示圖片 cv2.namedWindow('image', cv2.WINDOW_NORMAL) cv2.imshow('image',paintx) cv2.imwrite('image.jpg',paintx) cv2.waitKey(0) 

 


投影圖


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM