OpenCV指南1:如何在圖像中添加形狀和文字?
4) 如何調(diào)整圖像大小?
4.1. 縮小圖像有時(shí)我們會(huì)得到高分辨率的圖像,因此對(duì)此類圖像執(zhí)行任何操作都非常困難,因?yàn)樗鼤?huì)占用更多空間并影響性能。在這種情況下,我們將調(diào)整圖像的大小和縮放比例以避免此類問(wèn)題。cv.resize() 首選的插值方法是 cv.INTER_AREA ,用于縮小原始圖像。下面提到的是我們可以用來(lái)調(diào)整圖像、視頻和實(shí)時(shí)視頻大小的功能。def FrameResize(frame,scale):
Height=int(frame.shape[0]*scale)
Width=int(frame.shape[1]*scale)
Dimension=(Height,Width)
return cv.resize(frame,Dimension,interpolation = cv.INTER_AREA)
現(xiàn)在,我們將嘗試將圖像大小調(diào)整 50%。img=cv.imread("/content/drive/MyDrive/Colab Notebooks/Opencv/fiona-smallwood-iUxjs-F0voI-unsplash-min.jpg")
print("Shape of the image before resizing :",img.shape,"")
cv2_imshow(img)
print(" Image post Resizing ")
img_resize=FrameResize(img,0.50)
cv2_imshow(img_resize)
上述代碼的輸出是:原圖:
調(diào)整大小后:
4.2. 放大圖像:上面我們已經(jīng)看到了圖像的縮小。現(xiàn)在我們將專注于圖像的放大。我們將使用 cv.INTER_CUBIC & cv.INTER_LINEAR 進(jìn)行放大。cv.INTER_CUBIC 比 cv.INTER_LINEAR 慢,但cv.INTER_CUBIC 的輸出比 cv.INTER_LINEAR 好。默認(rèn)情況下,插值方法 cv.INTER_LINEAR 用于所有調(diào)整大小的目的。Resized=cv.resize(original_img,(700,850),interpolation=cv.INTER_LINEAR)
cv2_imshow(Resized)
上述代碼的輸出是:
4.3. 視頻大小調(diào)整現(xiàn)在我們將查看視頻的大小調(diào)整。Vid=cv.VideoCapture("/content/drive/MyDrive/Colab Notebooks/Pexels Videos 2716.mp4")
while True:
isTrue,Frame= Vid.read()
New_Frame=FrameResize(Frame,0.50)
cv2_imshow(New_Frame)
if cv.waitKey(20) & 0xFF==ord('d'):
break
Vid.release()
cv.destroyAllWindows()
上述代碼的輸出是:
下面提到的是另一個(gè)功能,在實(shí)時(shí)視頻的情況下很有幫助。def ChangeRes(Width,Height):
Vid.set(3,Width)
Vid.set(4,Height)
return Vid
5) 如何在圖片中添加形狀和文字?
在這里,我們將嘗試添加不同的形狀,如矩形、圓形,并嘗試形狀的厚度。
5.1. 在圖像中添加矩形下面提到的是這里的代碼,我們將 original_img 作為我們將在其上繪制矩形的輸入圖像。矩形的起始像素點(diǎn)是(200,200),一直到(300,300)。而顏色是 B=200,G=100 和 R=150。查看下面提到的代碼及其輸出original_img=cv.imread("/content/drive/MyDrive/Colab Notebooks/Opencv/19mxv41g9rh61(1).jpg")
cv.rectangle(original_img,(200,200),(300,300),(200,100,150),thickness=2)
cv2_imshow(original_img)
上述代碼的輸出:
5.2. 添加具有顏色填充的矩形下面提到的是這里的代碼,我們將 original_img 作為我們將在其上繪制矩形的輸入圖像。矩形的起始像素點(diǎn)是(0,0),它一直到圖像的中心。而顏色是 B=200,G=155 和 R=40。這里我們采用了thickness=-1,所以整個(gè)矩形都被顏色填充。cv.rectangle(original_img,(0,0),(original_img.shape[1]//2,original_img.shape[0]//2),(200,155,40),thickness=-1)
cv2_imshow(original_img)
上述代碼的輸出:
5.3. 添加具有顏色填充的圓形下面提到的是這里的代碼,我們將 original_img 作為我們將在其上繪制圓圈的輸入圖像。圓的中心像素點(diǎn)為(450,450),圓的半徑為40。而顏色為B=25,G=0,R=100。這里我們采用了thickness=-1,所以整個(gè)圓圈都被顏色填充。cv.circle(original_img,(450,450),40,(25,0,100),thickness=-1)
cv2_imshow(original_img)
上述代碼的輸出:
5.4. 在圖像中添加線下面提到的是這里的代碼,我們將 original_img 作為我們將在其上繪制矩形的輸入圖像。線的起始像素點(diǎn)為 (300,300),線的終點(diǎn)像素為 (500,500)。cv.line(original_img,(300,300),(500,500),255,thickness=2)
cv2_imshow(original_img)
上述代碼的輸出:
5.5. 在圖像中添加文本在這里,我們將通過(guò)使用cv.putText()方法為空白圖像添加文字,在這里我們輸入文字,像素位置,我們還可以選擇字體類型,如字體FONT_HERSHEY_SIMPLEX,FONT_HERSHEY_PLAIN等等,字體比例、顏色、粗細(xì)。我們也可以使用下面的代碼中提到的 numpy 創(chuàng)建空白圖像。blank=np.ones((500,500,3),dtype='uint8')
cv.putText(blank,'Green light',(blank.shape[0]//2,blank.shape[1]//2),cv.FONT_HERSHEY_COMPLEX,1,(0,255,0),thickness=3)
cv2_imshow(blank)
上述代碼的輸出:
6) 如何裁剪圖像?
我們可以使用下面提到的代碼輕松裁剪圖像的特定部分。這里你只需要指定你要裁剪的像素。cv2_imshow(original_img)
Crop_img=original_img[200:350,325:450]
cv2_imshow(Crop_img)
上述代碼的輸出:原圖:
從圖像中裁剪部分:
7) 如何旋轉(zhuǎn)或移動(dòng)圖像?
如果我們想移動(dòng)圖像,請(qǐng)查看下面的函數(shù),這對(duì)于相同的功能非常有用:def rotate(img,angle,center=None):
w,h=img.shape[:2]
if center==None:
center=(w//2,h//2)
#center is the center of image from which we have to rotate if it is None then it is cconsider as the center of the original image.
rotMat=cv.getRotationMatrix2D(center,angle,1.0)
dim=(w,h)
return cv.warpAffine(img,rotMat,dim)
在這里,我們嘗試使用上述函數(shù)來(lái)旋轉(zhuǎn)圖像。Rotated_img=rotate(original_img,45,(60,60))
cv2_imshow(Rotated_img)
上述代碼的輸出:
現(xiàn)在,我們將嘗試旋轉(zhuǎn)上面已經(jīng)旋轉(zhuǎn)的圖像。
從上面的輸出我們知道,如果我們嘗試旋轉(zhuǎn)已經(jīng)旋轉(zhuǎn)的圖像,那么在早期圖像中不可見(jiàn)的圖像部分也會(huì)在當(dāng)前輸出圖像中丟失。此外,我們可以顛倒圖像。查看下面提到的代碼及其輸出。flip_img=cv.flip(original_img,-1)
cv2_imshow(flip_img)
上述代碼的輸出:
總結(jié)
如果你到目前為止已經(jīng)閱讀了該博客,那么你必須熟悉 OpenCV。OpenCV 的其余主題將在下一篇博客中介紹。查看下一篇博客的鏈接,我們將重點(diǎn)介紹 OpenCV 的一些高級(jí)內(nèi)容。
發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
最新活動(dòng)更多
-
10月31日立即下載>> 【限時(shí)免費(fèi)下載】TE暖通空調(diào)系統(tǒng)高效可靠的組件解決方案
-
即日-11.13立即報(bào)名>>> 【在線會(huì)議】多物理場(chǎng)仿真助跑新能源汽車
-
11月28日立即報(bào)名>>> 2024工程師系列—工業(yè)電子技術(shù)在線會(huì)議
-
12月19日立即報(bào)名>> 【線下會(huì)議】OFweek 2024(第九屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會(huì)
-
即日-12.26火熱報(bào)名中>> OFweek2024中國(guó)智造CIO在線峰會(huì)
-
即日-2025.8.1立即下載>> 《2024智能制造產(chǎn)業(yè)高端化、智能化、綠色化發(fā)展藍(lán)皮書》
推薦專題
- 1 【一周車話】沒(méi)有方向盤和踏板的車,你敢坐嗎?
- 2 特斯拉發(fā)布無(wú)人駕駛車,還未迎來(lái)“Chatgpt時(shí)刻”
- 3 特斯拉股價(jià)大跌15%:Robotaxi離落地還差一個(gè)蘿卜快跑
- 4 馬斯克給的“驚喜”夠嗎?
- 5 打完“價(jià)格戰(zhàn)”,大模型還要比什么?
- 6 馬斯克致敬“國(guó)產(chǎn)蘿卜”?
- 7 神經(jīng)網(wǎng)絡(luò),誰(shuí)是盈利最強(qiáng)企業(yè)?
- 8 比蘋果偉大100倍!真正改寫人類歷史的智能產(chǎn)品降臨
- 9 諾獎(jiǎng)進(jìn)入“AI時(shí)代”,人類何去何從?
- 10 Open AI融資后成萬(wàn)億獨(dú)角獸,AI人才之爭(zhēng)開啟
- 高級(jí)軟件工程師 廣東省/深圳市
- 自動(dòng)化高級(jí)工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級(jí)銷售經(jīng)理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術(shù)專家 廣東省/江門市
- 封裝工程師 北京市/海淀區(qū)
- 結(jié)構(gòu)工程師 廣東省/深圳市