opencv python實現投影

2021-10-23 03:41:21 字數 2494 閱讀 2551

圖123.jpg

先看一下執行結果

水平投影

垂直投影

圖project1.bmp

水平投影

垂直投影

**如下

這個**實現的是project1.bmp的投影

import cv2  

import numpy as np

from matplotlib import pyplot as plt

from pil import image

img=cv2.imread(

'e:\\project1.bmp'

)#將影象轉為灰度圖

grayimage=cv2.cvtcolor(img,cv2.color_bgr2gray)

#水平投影

ret,thresh1=cv2.threshold(grayimage,

130,

255,cv2.thresh_binary)

(h,w)

=thresh1.shape #返回高和寬

#初始化乙個跟影象高一樣長度的陣列,用於記錄每一行的黑點個數

a =[

0for z in

range(0

, h)

]for j in

range(0

,h):

#遍歷每一行

for i in

range(0

,w):

#遍歷每一列

if thresh1[j,i]==0

:#判斷該點是否為黑點,0代表黑點

a[j]+=1

#該行的計數器加一

thresh1[j,i]

=255

#將其改為白點,即等於255

for j in

range(0

,h):

#遍歷每一行

for i in

range(0

,a[j]):

#從該行應該變黑的最左邊的點開始向最右邊的點設定黑點

thresh1[j,i]=0

#設定黑點

plt.imshow(thresh1,cmap=plt.gray())

plt.show(

)#垂直投影

ret,thresh1=cv2.threshold(grayimage,

130,

255,cv2.thresh_binary)

(h,w)

=thresh1.shape #返回高和寬

#初始化乙個跟影象寬一樣長度的陣列,用於記錄每一列的黑點個數

a =[

0for z in

range(0

, w)

]for j in

range(0

,w):

#遍歷每一列

for i in

range(0

,h):

#遍歷每一行

if thresh1[i,j]==0

:#判斷該點是否為黑點,0代表是黑點

a[j]+=1

#該列的計數器加1

thresh1[i,j]

=255

#記錄完後將其變為白色,即等於255

for j in

range(0

,w):

#遍歷每一列

for i in

range

(h-a[j]

,h):

#從該列應該變黑的最頂部的開始向最底部設為黑點

#for i in range(0,a[i]):

thresh1[i,j]=0

#設為黑點

plt.imshow(thresh1,cmap=plt.gray())

plt.show(

)

cv2.waitkey(

0)

cv2.destroyallwindows(

)

OpenCV Python 實現人臉識別

參考 1 2 haar特徵值反映了影象的灰度變化情況。例如 臉部的一些特徵能由矩形特徵簡單的描述,如 眼睛要比臉頰顏色要深,鼻樑兩側比鼻樑顏色要深,嘴巴比周圍顏色要深等。import cv2 image cv2.imread imagepath import cv2 gray cv2.cvtcolo...

使用opencv python實現人臉識別

簡潔的 完 臉識別,本文用到的人臉識別分類器在opencv python的安裝目錄下可以找到,檔名haarcascade frontalface alt2.xml 上 import cv2 def getfaceidimg img cv2.namedwindow 1 num 0 frame cv2....

OpenCV Python模糊處理

import cv2 as cv import numpy as np 均值模糊 defblur demo img dst cv.blur img,5 5 cv.imshow blur image dst import cv2 as cv import numpy as np 中值模糊 defmed...