前阵子在看OpenCV原文书,顺便玩几个简单的影像处理技术
如果大家有兴趣,之后再发更实用的影像处理或是发几篇教学之类的(像是Edge Detection, Gaussian and Laplacian Pyramids, Image Transformation等...)
今天就发一些简单的例子给大家玩玩,哈哈
环境:
opencv-python (3.4.3.18)
Python 3.6.5
UI framework: pyqt5 (5.11.3)
1.Color Convertion
变成
其实就是把RGB的颜色变成GBR,值得一提的是在OpenCV当中默认的通道顺序是BGR而非RGB。
主要是因为早期BGR比较流行,所以OpenCV就选择了BGR这个方式,没想到后来RGB成为主流,但OpenCV也不就好更改。
这是一段上课时教授说的小故事,但也无从考证,所以就姑且这样相信吧哈哈。
[Python] 纯文本查看 复制代码 def on_btn1_2_click(self):
#load image
img = cv2.imread('images/color.png')
#color conversion
b, g, r = cv2.split(img)
img_cc = cv2.merge((g,r,b))
#show image
cv2.imshow('ShowImage', img)
cv2.imshow('ShowImage(Converted)', img_cc)
#destroy
cv2.waitKey()
cv2.destroyAllWindows()
2.Image Flipping
图片翻转。这个技术非常实用,尤其应用在deep learning的部分。
deep learning是需要大量data的,资料越多就会越精准。
所以影像反转就是一个小技巧,我们可以把资料左右翻转就会多出一倍的资料供deep learning参考,而且我们还可以上下翻转呢。
目前这个技巧我知道的是有用在人脸辨识上。
[Python] 纯文本查看 复制代码 #load image
img = cv2.imread('images/dog.bmp')
#image flip(0 = vertical, 1 = horizontal, -1 = both)
img_flip = cv2.flip(img, 1)
#show image
cv2.imshow('ShowImage', img)
cv2.imshow('ShowImage(Flipped)', img_flip)
#destroy
cv2.waitKey()
cv2.destroyAllWindows()
3.Blending
上面技术Image Flipping再衍生,把两张图片合成。
透过一个Tool bar去调整两张图的参数权重。
[Python] 纯文本查看 复制代码 #load image
img = cv2.imread('images/dog.bmp')
img_flip = cv2.flip(img, 1)
#Blending
def blend(x):
blend_value = cv2.getTrackbarPos("Blend", "ShowImage")
img_blend = cv2.addWeighted(img, (100 - blend_value)/100, img_flip, blend_value/100, 0);
cv2.imshow("ShowImage", img_blend)
#New window
cv2.namedWindow("ShowImage")
cv2.createTrackbar("Blend", "ShowImage", 0, 100, blend)
cv2.setTrackbarPos("Blend", "ShowImage", 50)
#destroy
cv2.waitKey()
cv2.destroyAllWindows()
今天就先发到这,给大家玩玩这三个小应用。
大家有兴趣我再写其他的。 |