日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图像处理OpenCV(2)——OpenCV基本操作之图像的基础操作

發(fā)布時間:2023/12/9 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图像处理OpenCV(2)——OpenCV基本操作之图像的基础操作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 2.OpenCV基本操作
    • 2.1 圖像的IO操作
      • 2.1.1 讀取圖像
      • 2.1.2 顯示圖像
      • 2.1.3 保存圖像
      • 2.1.4總結(jié)
    • 2.2 繪制幾何圖形
      • 2.2.1 繪制直線
      • 2.2.2繪制圓形
      • 2.2.3繪制矩形
      • 2.2.4向圖像中添加文字
      • 2.2.5效果顯示
    • 2.3獲取并修改圖像中的像素點
    • 2.4獲取圖像的屬性
    • 2.5圖像通道的拆分與合并
    • 2.6色彩空間的改變

2.OpenCV基本操作

2.1 圖像的IO操作

2.1.1 讀取圖像

  • API

    cv.imread()

    參數(shù):

    • 要讀取的圖像

    • 讀取方式的標志:

      • cv.UMREAD*COLOR:以彩色模式加載圖像,任何圖像的透明度都將被忽略,這是默認參數(shù)

      • cv.IMREAD*GRAYSCALE:以灰度模式加載圖像

      • cv.IMREAD_UNCHANGED:包括alpha通道的加載圖像模式

        可以使用1、0或者-1來代替上面三個標志

    • 參考代碼:

      import numpy as np import cv2 as cv # 以灰度圖的形式讀取圖像 img = cv.imread('1.png',0)
  • ? 注意:如果加載的路徑有錯誤,不會報錯,會返回一個None值,因此要確保圖像是存在的,圖片路徑是對的。

    2.1.2 顯示圖像

  • API

    cv.imshow()

    參數(shù):

    • 顯示圖像的窗口名稱,以字符串類型表示
    • 要加載的圖像

    注意:在調(diào)用顯示圖像的API后,要調(diào)用cv.waitKey()個圖像繪制留下時間,否則窗口會出現(xiàn)無響應(yīng)的情況,并且圖像無法顯示出來。

    另外,我們也可以使用matplotlib對圖像進行展示。

    參考代碼:

    # opencv中顯示 cv.imshow('image',img) cv.waitKey(0) # matplotlib中展示 plt.imshow(img[:,:,::-1])
  • 2.1.3 保存圖像

  • API

    cv.imwrite()

    參數(shù):

    • 文件名,要保存在哪里
    • 要保存的圖像
  • 參考代碼

    cv.imwrite('test.png',img)
  • 2.1.4總結(jié)

    我們通過加載灰度圖像,顯示圖像,如果按’s’并退出則保存圖像,或者按ESC鍵直接退出而不保存。

    參考代碼:

    • 顯示彩色圖像:

      import numpy as np import cv2 as cv import matplotlib.pyplot as plt # 1.讀取圖像 img = cv.imread('1.png') # 2.顯示圖像 # 2.1利用opencv展示圖像 cv.imshow('image',img) cv.waitKey(0) cv.destroyAllWindows()
    • 顯示灰色圖像

    import numpy as np import cv2 as cv import matplotlib.pyplot as plt # 1.讀取圖像 img = cv.imread('1.png',0) # 按照灰度圖進行展示 plt.imshow(img,cmap=plt.cm.gray) # plt.title('匹配結(jié)果'),plt.xticks([]),plt.yticks([]) plt.show()
    • 保存圖像

      # 3.保存圖像,注意保存路徑中不能有中文路徑 cv.imwrite('./1_IOtest.png',img)

    2.2 繪制幾何圖形

    2.2.1 繪制直線

    cv.line(img,start,end,color,thickness)
    • 參數(shù):
      • img:要繪制直線的圖像
      • Start,end:直線的起點和終點
      • color:線條的顏色
      • thickness:線條寬度

    2.2.2繪制圓形

    cv.circle(img,centerpoint,r,color,thickness)
    • 參數(shù):
      • img:要繪制圖形的圖像
      • centerpoint,r:圓心和半徑
      • color:線條的顏色
      • thickness:線條寬度,為-1時生成閉合圖案并填充顏色

    2.2.3繪制矩形

    cv.rectangle(img,leftupper,rightdown,color,thickness)
    • 參數(shù):
      • img:要繪制矩形的圖像
      • leftupper,rightdown:舉行的左上角和右下角坐標
      • color:線條的顏色
      • thickness:線條寬度

    2.2.4向圖像中添加文字

    cv.putText(img,text,station,font,fontsize,color,thickness,cv.LINE_AA)
    • 參數(shù):
      • img:圖像
      • text:要寫入的文本數(shù)據(jù)
      • station:文本的放置位置
      • font:字體
      • fontsize:字體大小

    2.2.5效果顯示

    生成一個全黑的圖像,然后再里面繪制圖像并添加文字

    import numpy as np import cv2 as cv import matplotlib.pyplot as plt # 創(chuàng)建一個空白的圖像 # 生成全黑的圖像即為np.zeros img = np.zeros((512,512,3),np.uint8) # 繪制圖形 cv.line(img,(0,0),(511,511),(255,0,0),5) cv.rectangle(img,(128,128),(384,384),(0,255,0),3) cv.circle(img,(256,256),63,(0,0,255),-1) font = cv.FONT_HERSHEY_SIMPLEX cv.putText(img,'OpenCV',(10,500),font,4,(255,255,255),2,cv.LINE_AA) # 3.圖像顯示 plt.imshow(img[:,:,::-1]) # plt.imshow(img) plt.title('hello'),plt.xticks([]),plt.yticks([]) plt.show()

    效果:

    [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-B4wlv6iR-1647516243400)(C:\Users\23642\AppData\Roaming\Typora\typora-user-images\image-20220317171053140.png)]

    2.3獲取并修改圖像中的像素點

    我們可以通過行和列的坐標獲取該像素點的像素值。對于BGR圖像,它返回一個藍、綠、紅值得數(shù)組。對于灰度圖像,僅返回相應(yīng)的強度值,使用相同的方法對像素值進行修改。

    import matplotlib.pyplot as plt import numpy as np import cv2 as cv img = cv.imread('/images/1.png') # 創(chuàng)建全黑的圖像 img = np.zeros((256,256,3),np.uint8) plt.imshow(img[:,:,::-1]) print(img[100, 100]) print(img[100, 100, 0]) img[100,100]=(0,0,255) print(img[100, 100]) plt.imshow(img[:,:,::-1]) plt.show()

    2.4獲取圖像的屬性

    圖像屬性包括行數(shù)、列數(shù)和通道數(shù),圖像數(shù)據(jù)類型、像素數(shù)等。

    屬性API
    形狀img.shape
    圖像大小img.size
    數(shù)據(jù)類型img.dtype

    代碼演示:

    import numpy as np import cv2 as cv import matplotlib.pyplot as plt # img = cv.imread('/images/1.png') img = np.zeros((256,256,3),np.uint8) print(img.shape) # (256, 256, 3) print(img.dtype) # uint8 print(img.size) # 196608

    2.5圖像通道的拆分與合并

    有時需要在B、G、R通道圖像上單獨工作。在這種情況下,需要將RGB圖像分割為單個通道,或者在其他情況下,可能需要將這些單獨的通道合并到RGB圖像,可以通過以下方式完成:

    # 通道拆分 b,g,r=cv.split(img) # 通道合并 img = cv.merge((b,g,r))

    2.6色彩空間的改變

    OpenCV中有150多種顏色空間轉(zhuǎn)換方法。最廣泛使用的轉(zhuǎn)換方法有兩種,BGR<->Gray和BGR<->HSV

    API:

    cv.cvColor(input_image,flag)

    參數(shù):

    • input_image:進行顏色空間轉(zhuǎn)換的圖像
    • flag:轉(zhuǎn)換類型
      • cv.COLOR_BGR2GRAY :BGR<->Gray
      • cv.COLOR_BGR2HSV :BGR<->HSV
    import numpy as np import cv2 as cv import matplotlib.pyplot as pltimg= cv.imread('images/1.png') plt.imshow(img[:,:,::-1]) plt.show() b,g,r=cv.split(img) plt.imshow(b,cmap=plt.cm.gray) plt.show() img2 = cv.merge((b,g,r)) plt.imshow(img2[:,:,::-1]) plt.show() gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY) plt.imshow(gray,cmap=plt.cm.gray) plt.show() hsv = cv.cvtColor(img,cv.COLOR_BGR2HSV) plt.imshow(hsv) plt.show() # print(b,g,r)

    效果:

    總結(jié)

    以上是生活随笔為你收集整理的图像处理OpenCV(2)——OpenCV基本操作之图像的基础操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。