OpenCV指南1:如何在圖像中添加形狀和文字?
4) 如何調(diào)整圖像大小?
4.1. 縮小圖像有時(shí)我們會(huì)得到高分辨率的圖像,因此對此類圖像執(zhí)行任何操作都非常困難,因?yàn)樗鼤?huì)占用更多空間并影響性能。在這種情況下,我們將調(diào)整圖像的大小和縮放比例以避免此類問題。cv.resize() 首選的插值方法是 cv.INTER_AREA ,用于縮小原始圖像。下面提到的是我們可以用來調(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)圖像,請查看下面的函數(shù),這對于相同的功能非常有用: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ù)來旋轉(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 的一些高級內(nèi)容。

發(fā)表評論
請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個(gè)字
最新活動(dòng)更多
-
7月8日立即報(bào)名>> 【在線會(huì)議】英飛凌新一代智能照明方案賦能綠色建筑與工業(yè)互聯(lián)
-
7月22-29日立即報(bào)名>> 【線下論壇】第三屆安富利汽車生態(tài)圈峰會(huì)
-
7.30-8.1火熱報(bào)名中>> 全數(shù)會(huì)2025(第六屆)機(jī)器人及智能工廠展
-
7月31日免費(fèi)預(yù)約>> OFweek 2025具身智能機(jī)器人產(chǎn)業(yè)技術(shù)創(chuàng)新應(yīng)用論壇
-
免費(fèi)參會(huì)立即報(bào)名>> 7月30日- 8月1日 2025全數(shù)會(huì)工業(yè)芯片與傳感儀表展
-
即日-2025.8.1立即下載>> 《2024智能制造產(chǎn)業(yè)高端化、智能化、綠色化發(fā)展藍(lán)皮書》
推薦專題
- 1 AI 眼鏡讓百萬 APP「集體失業(yè)」?
- 2 豆包前負(fù)責(zé)人喬木出軌BP后續(xù):均被辭退
- 3 一文看懂視覺語言動(dòng)作模型(VLA)及其應(yīng)用
- 4 “支付+”時(shí)代,支付即生態(tài) | 2025中國跨境支付十大趨勢
- 5 中國最具實(shí)力AI公司TOP10
- 6 特斯拉Robotaxi上路,馬斯克端上畫了十年的餅
- 7 國家數(shù)據(jù)局局長劉烈宏調(diào)研格創(chuàng)東智
- 8 AI的夏天:第四范式VS云從科技VS地平線機(jī)器人
- 9 張勇等人退出阿里合伙人
- 10 AI視頻,攪動(dòng)1.5萬億市場