如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
import cv2
import numpy as np
bins = np.arange( 256 ).reshape( 256 , 1 )
def hist_curve(im):
h = np.zeros(( 300 , 256 , 3 ))
if len (im.shape) = = 2 :
color = [( 255 , 255 , 255 )]
elif im.shape[ 2 ] = = 3 :
color = [ ( 255 , 0 , 0 ),( 0 , 255 , 0 ),( 0 , 0 , 255 ) ]
for ch, col in enumerate (color):
hist_item = cv2.calcHist([im],[ch], None ,[ 256 ],[ 0 , 256 ])
cv2.normalize(hist_item,hist_item, 0 , 255 ,cv2.NORM_MINMAX)
hist = np.int32(np.around(hist_item))
pts = np.int32(np.column_stack((bins,hist)))
cv2.polylines(h,[pts], False ,col)
y = np.flipud(h)
return y
def hist_lines(im):
h = np.zeros(( 300 , 256 , 3 ))
if len (im.shape)! = 2 :
print "hist_lines applicable only for grayscale images"
#print "so converting image to grayscale for representation"
im = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
hist_item = cv2.calcHist([im],[ 0 ], None ,[ 256 ],[ 0 , 256 ])
cv2.normalize(hist_item,hist_item, 0 , 255 ,cv2.NORM_MINMAX)
hist = np.int32(np.around(hist_item))
for x,y in enumerate (hist):
cv2.line(h,(x, 0 ),(x,y),( 255 , 255 , 255 ))
y = np.flipud(h)
return y
if __name__ = = '__main__' :
import sys
if len (sys.argv)> 1 :
im = cv2.imread(sys.argv[ 1 ])
else :
im = cv2.imread( '../cpp/lena.jpg' )
gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
print ''' Histogram plotting \n
Keymap :\n
a - show histogram for color image in curve mode \n
b - show histogram in bin mode \n
c - show equalized histogram (always in bin mode) \n
d - show histogram for color image in curve mode \n
e - show histogram for a normalized image in curve mode \n
Esc - exit \n
'''
cv2.imshow( 'image' ,im)
while True :
k = cv2.waitKey( 0 )& 0xFF
if k = = ord ( 'a' ):
curve = hist_curve(im)
cv2.imshow( 'histogram' ,curve)
cv2.imshow( 'image' ,im)
print 'a'
elif k = = ord ( 'b' ):
print 'b'
lines = hist_lines(im)
cv2.imshow( 'histogram' ,lines)
cv2.imshow( 'image' ,gray)
elif k = = ord ( 'c' ):
print 'c'
equ = cv2.equalizeHist(gray)
lines = hist_lines(equ)
cv2.imshow( 'histogram' ,lines)
cv2.imshow( 'image' ,equ)
elif k = = ord ( 'd' ):
print 'd'
curve = hist_curve(gray)
cv2.imshow( 'histogram' ,curve)
cv2.imshow( 'image' ,gray)
elif k = = ord ( 'e' ):
print 'e'
norm = cv2.normalize(gray,alpha = 0 ,beta = 255 ,norm_type = cv2.NORM_MINMAX)
lines = hist_lines(norm)
cv2.imshow( 'histogram' ,lines)
cv2.imshow( 'image' ,norm)
elif k = = 27 :
print 'ESC'
cv2.destroyAllWindows()
break
cv2.destroyAllWindows()
|
以上这篇python调用摄像头显示图像的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/jacke121/article/details/54565309