<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
右擊新建的專案,選擇Python File,新建一個Python檔案,然後在開頭import cv2
匯入cv2庫,import numpy
並且重新命名為np
。
import cv2 import numpy as np
我們還要知道在OpenCV中,座標軸的方向是x軸向右,y軸向下,座標原點在左上角,比如下面這張長為640畫素,寬為480畫素的圖片。OK,下面開始本節的學習吧。
呼叫np的hstack()水平堆疊方法,引數是我們要堆疊的影象,引數個數是我們要堆疊的數量。
img=cv2.imread("Resources/lena.png") imgHor=np.hstack((img,img)) cv2.imshow("Horizontal",imgHor) cv2.waitKey(0)
執行看下效果,因為我們輸入的引數是(img,img),所以是水平拼接兩張原圖。
我們改成水平三張的:imgHor=np.hstack((img,img,img))
呼叫np的vstack()垂直堆疊方法,引數是我們要堆疊的影象,引數個數是我們要堆疊的數量。
img=cv2.imread("Resources/lena.png") imgVer=np.vstack((img,img)) cv2.imshow("Vertical",imgVer) cv2.waitKey(0)
執行看下效果,因為我們輸入的引數是(img,img),所以是垂直拼接兩張原圖。
同理,我們可以改成垂直三張的:imgVer=np.vstack((img,img,img))
如果單純地使用numpy的函數進行堆疊,對不同大小和不同通道的影象是無法進行堆疊的,所以我們需要自己實現一個堆疊方法,下面就是模板,可以實現我們想要的效果,我們不需要去理解這段程式碼,因為理解了也不能獲得任何有用資訊,知道怎麼用就可以了。
def stackImages(scale,imgArray): rows = len(imgArray) cols = len(imgArray[0]) rowsAvailable = isinstance(imgArray[0], list) width = imgArray[0][0].shape[1] height = imgArray[0][0].shape[0] if rowsAvailable: for x in range ( 0, rows): for y in range(0, cols): if imgArray[x][y].shape[:2] == imgArray[0][0].shape [:2]: imgArray[x][y] = cv2.resize(imgArray[x][y], (0, 0), None, scale, scale) else: imgArray[x][y] = cv2.resize(imgArray[x][y], (imgArray[0][0].shape[1], imgArray[0][0].shape[0]), None, scale, scale) if len(imgArray[x][y].shape) == 2: imgArray[x][y]= cv2.cvtColor( imgArray[x][y], cv2.COLOR_GRAY2BGR) imageBlank = np.zeros((height, width, 3), np.uint8) hor = [imageBlank]*rows hor_con = [imageBlank]*rows for x in range(0, rows): hor[x] = np.hstack(imgArray[x]) ver = np.vstack(hor) else: for x in range(0, rows): if imgArray[x].shape[:2] == imgArray[0].shape[:2]: imgArray[x] = cv2.resize(imgArray[x], (0, 0), None, scale, scale) else: imgArray[x] = cv2.resize(imgArray[x], (imgArray[0].shape[1], imgArray[0].shape[0]), None,scale, scale) if len(imgArray[x].shape) == 2: imgArray[x] = cv2.cvtColor(imgArray[x], cv2.COLOR_GRAY2BGR) hor= np.hstack(imgArray) ver = hor return ver
水平與垂直堆疊
img=cv2.imread("Resources/lena.png") imgStcak=stackImages(0.5,([img,img,img],[img,img,img])) cv2.imshow("ImgStack",imgStcak) cv2.waitKey(0)
我們執行看下效果:
既然說道該方法可以組合不同通道的影象,也就是說可以將灰度影象和彩色影象堆疊在一起。那麼我們就來試一下:
img=cv2.imread("Resources/lena.png") imgGray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) imgStcak=stackImages(0.5,([img,imgGray,img],[img,img,img])) cv2.imshow("ImgStack",imgStcak) cv2.waitKey(0)
cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
是將原彩色影象轉為灰度影象,從3通道變為1通道。然後我們在引數矩陣中換掉其中一個img。來執行看下效果:
本節的內容,很簡單也很有趣,在生活中有很多應用。眼過千遍不如手過一遍,快去動手敲一遍吧~
到此這篇關於OpenCV超詳細講解影象堆疊的實現的文章就介紹到這了,更多相關OpenCV 影象堆疊 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45