訂閱
糾錯
加入自媒體

OpenCV指南1:如何在圖像中添加形狀和文字?

4) 如何調(diào)整圖像大小?

4.1. 縮小圖像有時我們會得到高分辨率的圖像,因此對此類圖像執(zhí)行任何操作都非常困難,因?yàn)樗鼤加酶嗫臻g并影響性能。在這種情況下,我們將調(diào)整圖像的大小和縮放比例以避免此類問題。cv.resize() 首選的插值方法是 cv.INTER_AREA ,用于縮小原始圖像。下面提到的是我們可以用來調(diào)整圖像、視頻和實(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()
上述代碼的輸出是:

下面提到的是另一個功能,在實(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,所以整個矩形都被顏色填充。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,所以整個圓圈都被顏色填充。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)或移動圖像?

如果我們想移動圖像,請查看下面的函數(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)的圖像,那么在早期圖像中不可見的圖像部分也會在當(dāng)前輸出圖像中丟失。此外,我們可以顛倒圖像。查看下面提到的代碼及其輸出。flip_img=cv.flip(original_img,-1)
cv2_imshow(flip_img)
上述代碼的輸出:

總結(jié)

如果你到目前為止已經(jīng)閱讀了該博客,那么你必須熟悉 OpenCV。OpenCV 的其余主題將在下一篇博客中介紹。查看下一篇博客的鏈接,我們將重點(diǎn)介紹 OpenCV 的一些高級內(nèi)容。

image.png

<上一頁  1  2  
聲明: 本文由入駐維科號的作者撰寫,觀點(diǎn)僅代表作者本人,不代表OFweek立場。如有侵權(quán)或其他問題,請聯(lián)系舉報(bào)。

發(fā)表評論

0條評論,0人參與

請輸入評論內(nèi)容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗(yàn)證碼繼續(xù)

  • 看不清,點(diǎn)擊換一張  刷新

暫無評論

暫無評論

人工智能 獵頭職位 更多
掃碼關(guān)注公眾號
OFweek人工智能網(wǎng)
獲取更多精彩內(nèi)容
文章糾錯
x
*文字標(biāo)題:
*糾錯內(nèi)容:
聯(lián)系郵箱:
*驗(yàn) 證 碼:

粵公網(wǎng)安備 44030502002758號