ลำดับที่ | ชื่อ | ค่าที่ต้องใส่ | ชนิดข้อมูล |
---|---|---|---|
1 | images | อาเรย์รูปภาพ | list ของ np.array |
2 | channels | ช่องสีที่จะพิจารณา | list ของ int |
3 | mask | อาเรย์ตัวกรอง เมื่อต้องการเฉพาะบางส่วน | list ของ np.array |
4 | histSize | จำนวนช่อง | list ของ int |
5 | ranges | ขอบเขตค่าที่ต้องการ | list ของ int |
import cv2
import numpy as np
import matplotlib.pyplot as plt
miku = cv2.imread('miku11c01.jpg',0) # เปิดภาพมาเป็นขาวดำ
plt.figure(figsize=[6,8])
plt.subplot(211) # วาดภาพเดิมแบบขาวดำ
plt.imshow(miku,cmap='gray')
plt.colorbar(pad=0.01)
plt.subplot(212) # วาดฮิสโทแกรม
hist = cv2.calcHist([miku],[0],None,[256],[0,256])
plt.bar(np.arange(256),hist[:,0],1,color='m')
plt.tight_layout()
plt.show()
plt.plot(hist[:,0].cumsum(),'r')
plt.show()
miku = cv2.imread('miku11c01.jpg',0)
miku_eql = cv2.equalizeHist(miku)
plt.figure(figsize=[6,12])
plt.subplot(311) # ภาพหลังการปรับ
plt.imshow(miku_eql,cmap='gray')
plt.colorbar(pad=0.01)
plt.subplot(312) # ฮิสโทแกรม
hist_eql = cv2.calcHist([miku_eql],[0],None,[256],[0,256])
plt.bar(np.arange(256),hist_eql[:,0],1,color='m')
plt.subplot(313) # ผลบวกสะสมของฮิสโทแกรม
plt.plot(hist_eql[:,0].cumsum(),'r')
plt.tight_layout()
plt.show()
gumi = cv2.imread('gumi11c01.jpg',0)
plt.figure(figsize=[6,12])
plt.subplot(311) # ภาพเดิม
plt.imshow(gumi,cmap='gray')
plt.colorbar(pad=0.01)
plt.subplot(312) # ฮิสโทแกรม
hist = cv2.calcHist([gumi],[0],None,[256],[0,256])
plt.bar(np.arange(256),hist[:,0],1,color='m')
plt.subplot(313) # ผลบวกสะสม
plt.plot(hist[:,0].cumsum(),'r')
plt.tight_layout()
plt.show()
gumi = cv2.imread('gumi11c01.jpg',0)
gumi_eql = cv2.equalizeHist(gumi)
plt.figure(figsize=[6,12])
plt.subplot(311) # ภาพหลังการปรับ
plt.imshow(gumi_eql,cmap='gray')
plt.colorbar(pad=0.01)
plt.subplot(312) # ฮิสโทแกรม
hist_eql = cv2.calcHist([gumi_eql],[0],None,[256],[0,256])
plt.bar(np.arange(256),hist_eql[:,0],1,color='m')
plt.subplot(313) # ผลบวกสะสม
plt.plot(hist_eql[:,0].cumsum(),'r')
plt.tight_layout()
plt.show()
gumi = cv2.imread('gumi11c01.jpg',0)
clahe = cv2.createCLAHE() # สร้างออบเจ็กต์ CLAHE
gumi_clahe = clahe.apply(gumi) # เริ่มทำการแปลง
plt.figure(figsize=[6,12])
plt.subplot(311)
plt.imshow(gumi_clahe,cmap='gray')
plt.colorbar(pad=0.01)
plt.subplot(312)
hist_clahe = cv2.calcHist([gumi_clahe],[0],None,[256],[0,256])
plt.bar(np.arange(256),hist_clahe[:,0],1,color='m')
plt.subplot(313)
plt.plot(hist_clahe[:,0].cumsum(),'r')
plt.tight_layout()
plt.show()
rin = cv2.imread('rin11c01.jpg')
plt.figure(figsize=[6,7])
ax1 = plt.subplot(211)
ax2 = plt.subplot(212)
for i,c in enumerate('bgr'):
hist = cv2.calcHist([rin],[i],None,[256],[0,256])
ax1.plot(hist,c) # ฮิสโทแกรม
ax2.plot(hist.cumsum(),c) # ผลบวกสะสม
plt.tight_layout()
plt.show()
rin = cv2.imread('rin11c01.jpg')
hist = cv2.calcHist([rin],[0,1,2],None,[256,256,256],[0,256,0,256,0,256])
plt.figure(figsize=[6,15])
# น้ำเงิน-เขียว
plt.subplot(311,xlabel='b',ylabel='g')
plt.imshow(hist.sum(2),cmap='coolwarm')
plt.colorbar(pad=0.01)
# น้ำเงิน-แดง
plt.subplot(312,xlabel='b',ylabel='r')
plt.imshow(hist.sum(1),cmap='coolwarm')
plt.colorbar(pad=0.01)
# เขียว-แดง
plt.subplot(313,xlabel='g',ylabel='r')
plt.imshow(hist.sum(0),cmap='coolwarm')
plt.colorbar(pad=0.01)
plt.tight_layout()
plt.show()
import matplotlib as mpl
lognorm = mpl.colors.LogNorm()
plt.figure(figsize=[6,15])
for i,(xl,yl) in enumerate(['bg','br','gr']):
plt.subplot(311+i,xlabel=xl,ylabel=yl)
plt.imshow(hist.sum(2-i),cmap='coolwarm',norm=lognorm)
plt.colorbar(pad=0.01)
plt.tight_layout()
plt.show()
rin = cv2.imread('rin11c01.jpg')
rin_hsv = cv2.cvtColor(rin,cv2.COLOR_BGR2HSV)
hist = cv2.calcHist([rin_hsv],[0,1,2],None,[180,256,256],[0,180,0,256,0,256])
plt.figure(figsize=[6.5,4.5])
plt.subplot(221,title='h-s')
plt.imshow(hist.sum(2),cmap='coolwarm',norm=lognorm)
plt.colorbar(pad=0.01)
plt.subplot(222,title='h')
plt.plot(hist.sum(2).sum(1))
plt.subplot(223,title='s')
plt.plot(hist.sum(2).sum(0))
plt.subplot(224,title='v')
plt.plot(hist.sum(1).sum(0))
plt.tight_layout()
plt.show()
x = np.arange(256)
gamma = [1/5,1/3,0.5,1,2,3,5]
plt.figure(figsize=[5,5])
plt.gca(aspect=1)
for i,g in enumerate(gamma):
x_gamma = 255*(x/255)**(1/g)
plt.plot(x,x_gamma,label='$\gamma=%.2f$'%g,color=plt.get_cmap('rainbow')(i/6))
plt.legend()
plt.show()
ลำดับที่ | ชื่อ | ค่าที่ต้องใส่ | ชนิดข้อมูล |
---|---|---|---|
1 | src | อาเรย์รูปภาพ | np.array |
2 | lut | ตัวเทียบแปลง | np.array |
teto = cv2.imread('teto11c01.jpg')
gamma = [1/2,2/3,1,1.5,2,3] # ค่าแกมมาที่จะลองใช้
plt.figure(figsize=[6,7])
ar0255 = np.arange(0,256)/255
for i,g in enumerate(gamma):
plt.subplot(321+i,title='$\gamma=%.2f$'%g,xticks=[],yticks=[])
# สร้างตัวเทียบแปลงตามค่าแกมมา
lut = (255*ar0255**(1/g)).astype(np.uint8)
# แปลงสีตามตัวเทียบแปลงที่เตรียมไว้
teto_gamma = cv2.LUT(teto,lut)
plt.imshow(teto_gamma[:,:,::-1])
plt.tight_layout(0)
plt.show()
plt.figure(figsize=[6,7])
for i,g in enumerate(gamma):
teto_gamma = 255*(teto/255)**(1/g)
plt.subplot(321+i,title='$\gamma=%.2f$'%g)
for j,c in enumerate('bgr'):
hist = cv2.calcHist([teto_gamma],[j],None,[256],[0,256])
plt.plot(hist,c) # ฮิสโทแกรม
plt.tight_layout(0)
plt.show()
从日本来的名言 |
模块 -- numpy -- matplotlib -- pandas -- manim -- opencv -- pytorch 机器学习 -- 神经网络 |
maya |
javascript |
概率论 |
与日本相关的日记 |
与中国相关的日记 -- 与北京相关的日记 -- 与香港相关的日记 -- 与澳门相关的日记 |
与台湾相关的日记 |
与北欧相关的日记 |
与其他国家相关的日记 |
qiita |
其他日志 |
ติดตามอัปเดตของบล็อกได้ที่แฟนเพจ