<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                使用工具Python3.5 使用包cv2,numpy 1.獲取并修改像素值 讀取一副圖像,根據像素的行和列的坐標獲取它的像素值,對于RGB圖像而言,返回RGB的值,對于灰度圖則返回灰度值 ~~~ import cv2 import numpy img = cv2.imread('45.jpg') px=img[100,100] print(px) blue = img[100,100,0] print(blue) img[101,101]=[255,255,255] print(img[101,101]) ~~~ numpy是經過優化了的進行快速矩陣運算的包,所以不推薦逐個獲取像素值并修改能矩陣運算就不要用循環。 例如前5行的后3列,用numpy的array.item()和array.itemset()會更好。但是返回是標量,如果想獲得所有RGB的值,需要使用array.item()分割他們。 更好的方法是 ~~~ import cv2 import numpy img = cv2.imread('45.jpg') print(img.item(10,10,2)) img.itemset((10,10,2),100) print(img.item(10,10,2)) ~~~ 2.獲取圖像屬性 圖像屬性包括:行,列,通道,圖像數據類型,像素數目等 2.1 img.shape可以獲得圖像的形狀,返回值是一個包含行數,列數,通道數的元組 ~~~ import cv2 import numpy img = cv2.imread('45.jpg') print(img.shape) ~~~ 如果圖像是灰度圖,返回值僅有行數和列數,所以通過檢查返回值可以判斷是灰度圖還是彩色圖 2.2 img.size可以返回圖像的像素數目 ~~~ import cv2 import numpy img = cv2.imread('45.jpg') print(img.size) ~~~ 2.3 img.dtype返回圖像的數據類型,在debug時很重要,因為OpenCV-Python代碼中經常出現數據類型的不一致 ~~~ import cv2 import numpy img = cv2.imread('45.jpg') print(img.dtype) ~~~ 3.圖像ROI 對圖像的特定區域操作。ROI是使用numpy索引來獲得的。 例:選擇球的部分并拷貝到其他區域 ![](https://box.kancloud.cn/0e93e1656483b21559045976353106ce_347x212.jpg) ~~~ import cv2 import numpy img = cv2.imread('roi.jpg') ball =img[20:30,30:30] img[40:40,50:50]=ball ~~~ 注意!!這里沒有找到原圖,大家可以試試自己做的圖,并且要先知道圖像尺寸,以及你要移動的圖像的像素坐標,可以使用matplotlib!! 4.拆分及合并圖像通道 有時需要對RGB三個通道分別操作,這就需要拆分RGB為單個通道。有時需要把獨立的通道的圖片合成一個RGB。 ~~~ r,g,b=cv2.split(img)#拆分 img=cv2.merge(r,g,b)#合并 ~~~ 或者 ~~~ b=img[:,:,0]#拆分b通道 ~~~ 假如想使所有紅色通道值都為0,不必拆分再賦值,可以使用numpy索引,這樣更快 ~~~ img[:,:,2]=0 ~~~ cv2.split()是比較耗時的操作,能用numpy就盡量使用。 5.為圖像擴邊(填充) 想為圖像周圍建一個邊可以使用cv2.copyMakeBorder()函數。這經常在卷積運算或0填充時被用到。具體參數如下: 5.1 src輸入圖像 5.2 top,bottom,left,right對應邊界的像素數目 5.3 borderType要添加哪種類型的邊界: 5.3.1 cv2.BORDER_CONSTANT添加有顏色的常數值邊界,還需要下一個參數(value) 5.3.2 cv2.BORDER_REFLIECT邊界元素的鏡像。例如:fedcba | abcdefgh | hgfedcb 5.3.3 cv2.BORDER_101或者cv2.BORDER_DEFAULT跟上面一樣,但稍作改動,例如:gfedcb | abcdefgh | gfedcba 5.3.4 cv2.BORDER_REPLICATE復后一個元素。例如: aaaaaa| abcdefgh|hhhhhhh 5.3.5 cv2.BORDER_WRAP 不知怎么了, 就像樣: cdefgh| abcdefgh|abcdefg 5.3.6 value邊界顏色 舉例說明 ~~~ import cv2 import numpy from matplotlib import pyplot as plt img = cv2.imread('roi.jpg') blue = [255,0,0] replicate = cv2.copyMakeBorder(img,10,10,10,10,cv2.BORDER_REPLICATE) reflect = cv2.copyMakeBorder(img,10,10,10,10,cv2.BORDER_REFLECT) reflect101 = cv2.copyMakeBorder(img,10,10,10,10,cv2.BORDER_REFLECT101) wrap = cv2.copyMakeBorder(img,10,10,10,10,cv2.BORDER_WRAP) constant = cv2.copyMakeBorder(img,10,10,10,10,cv2.BORDER_CONSTANT,value=blue) plt.subplot(231),plt.imshow(img,'gray'),plt.title('original') plt.subplot(232),plt.imshow(replicate,'gray'),plt.title('replicate') plt.subplot(233),plt.imshow(reflect,'gray'),plt.title('reflect') plt.subplot(234),plt.imshow(reflect101,'gray'),plt.title('reflect101') plt.subplot(235),plt.imshow(wrap,'gray'),plt.title('wrap') plt.subplot(236),plt.imshow(constant,'gray'),plt.title('constant') plt.show() ~~~ ![](https://box.kancloud.cn/d9f90a4c97632fac408c443001209ef2_1162x773.jpg) 大家可以嘗試做做自己的圖片
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看