OpenCV指南1:如何在圖像中添加形狀和文字?
4) 如何調(diào)整圖像大小?
4.1. 縮小圖像有時(shí)我們會(huì)得到高分辨率的圖像,因此對(duì)此類圖像執(zhí)行任何操作都非常困難,因?yàn)樗鼤?huì)占用更多空間并影響性能。在這種情況下,我們將調(diào)整圖像的大小和縮放比例以避免此類問題。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)看到了圖像的縮小,F(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. 在圖像中添加文本在這里,我們將通過使用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)的圖像,那么在早期圖像中不可見的圖像部分也會(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è)字
圖片新聞
-
機(jī)器人奧運(yùn)會(huì)戰(zhàn)報(bào):宇樹機(jī)器人摘下首金,天工Ultra搶走首位“百米飛人”
-
存儲(chǔ)圈掐架!江波龍起訴佰維,索賠121萬(wàn)
-
長(zhǎng)安汽車母公司突然更名:從“中國(guó)長(zhǎng)安”到“辰致科技”
-
豆包前負(fù)責(zé)人喬木出軌BP后續(xù):均被辭退
-
字節(jié)AI Lab負(fù)責(zé)人李航卸任后返聘,Seed進(jìn)入調(diào)整期
-
員工持股爆雷?廣汽埃安緊急回應(yīng)
-
中國(guó)“智造”背后的「關(guān)鍵力量」
-
小米汽車研發(fā)中心重磅落地,寶馬家門口“搶人”
最新活動(dòng)更多
-
即日-9.16點(diǎn)擊進(jìn)入 >> 【限時(shí)福利】TE 2025國(guó)際物聯(lián)網(wǎng)展·深圳站
-
10月23日火熱報(bào)名中>> 2025是德科技創(chuàng)新技術(shù)峰會(huì)
-
10月23日立即報(bào)名>> Works With 開發(fā)者大會(huì)深圳站
-
10月24日立即參評(píng)>> 【評(píng)選】維科杯·OFweek 2025(第十屆)物聯(lián)網(wǎng)行業(yè)年度評(píng)選
-
11月27日立即報(bào)名>> 【工程師系列】汽車電子技術(shù)在線大會(huì)
-
12月18日立即報(bào)名>> 【線下會(huì)議】OFweek 2025(第十屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會(huì)
推薦專題
- 1 先進(jìn)算力新選擇 | 2025華為算力場(chǎng)景發(fā)布會(huì)暨北京xPN伙伴大會(huì)成功舉辦
- 2 人形機(jī)器人,正狂奔在批量交付的曠野
- 3 宇樹機(jī)器人撞人事件的深度剖析:六維力傳感器如何成為人機(jī)安全的關(guān)鍵屏障
- 4 解碼特斯拉新AI芯片戰(zhàn)略 :從Dojo到AI5和AI6推理引擎
- 5 AI版“四萬(wàn)億刺激”計(jì)劃來(lái)了
- 6 2025年8月人工智能投融資觀察
- 7 8 a16z最新AI百?gòu)?qiáng)榜:硅谷頂級(jí)VC帶你讀懂全球生成式AI賽道最新趨勢(shì)
- 9 Manus跑路,大廠掉線,只能靠DeepSeek了
- 10 地平線的野心:1000萬(wàn)套HSD上車