<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Image 類_ 圖像對象( `import image` ) `Image` 類_圖像對象是機器視覺操作的基本對象 ***** ## **構造函數:** * [ ] **構造圖像對象** ``` class image.Image(path[,copy_to_fb=False]) ``` > 打開一個新的圖像對象 *參數:* * `path`: 圖像對象路徑, 比如`/sd/MixPY.jpg`,支持`bmp` `pgm` `ppm` `jpg` `jpeg`格式的圖像文件 * `copy_to_fb`:圖像介質 * `True`,圖像會直接載入幀緩沖區,可以加載大幅圖片了 * `False`,圖像會載入MicroPython的堆中,堆遠比幀緩沖區小 *返回:* * 返回一個對象, 根據不同格式返回的對象不同 > 對于JPEG圖像而言,“\[\]”使得您可以訪問壓縮的節數組形式的JPEG圖像色塊。由于JPEG圖像是壓縮的字節流形式,因而對數據組的讀取和寫入是不透明的。 > > 圖像還支持讀緩沖區操作。您可以把圖像當作節數組對象,將圖像輸入所有類型的MicroPython函數。若您想傳送一個圖像,可以將它傳遞給UART /SPI/ I2C寫入函數,可實現自動傳送。 ***** ## **方法:** * [ ] **獲取圖像的寬度** ``` .width() ``` > 獲取以像素計的圖像的寬度 *參數:* * 無 *返回:* * 返回以像素計的圖像的寬度 ***** * [ ] **獲取圖像的高度** ``` .height() ``` > 獲取以像素計的圖像的高度 *參數:* * 無 *返回:* * 返回以像素計的圖像的高度 ***** * [ ] **獲取圖像的格式** ``` .format() ``` > 獲取圖像的格式 *參數:* * 無 *返回:* * `int`類型的圖像的格式 * `1`:? * `2`:RGB圖像的`sensor.RGB565`格式 * `3`:? * `4`:灰度圖的`sensor.GRAYSCALE`格式 ***** * [ ] **獲取圖像大小** ``` .size() ``` > 獲取圖像大小 *參數:* * 無 *返回:* * 返回以字節計的圖像大小 ***** * [ ] **獲取圖像某點像素值** ``` .get_pixel(x,y) ``` > 獲取圖像某點像素值 *參數:* * `x`,`y`:圖像的`(x, y)`位置點 *返回:* * ` RGB565`圖像,返回`(x, y)`位置的RGB888像素元組`(r, g, b)` * `GRAYSCALE`圖像, 返回`(x, y)`位置的像素值 > 不支持壓縮圖像 ***** * [ ] **設置圖像某點像素值** ``` .set_pixel(x,y [,rgbtuple]) ``` > 設置圖像某點像素值 *參數:* * `x`,`y`:圖像的`(x, y)`位置點 * `rgbtuple`:設置點顏色`RGB888`元組, 比如`(236, 36, 36)`,默認白色 *返回:* * ` RGB565`圖像,返回`(x, y)`位置的RGB888像素元組`(r, g, b)` * `GRAYSCALE`圖像, 返回`(x, y)`位置的像素值 > 不支持壓縮圖像 ***** * [ ] **原圖縮小圖像** ``` .mean_pool(x_div,y_div) ``` > 在原來圖像上快速縮小圖像 *參數:* * `x_div`,`y_div`:把圖像進行`x_div` `y_div`縮小的倍數(int類型) *返回:* * 返回縮小修改圖像 > 不支持壓縮圖像 ***** * [ ] **創建縮小圖像** ``` .mean_pooled(x_div,y_div) ``` > 創建縮小的圖像副本 *參數:* * `x_div`,`y_div`:把圖像進行`x_div` `y_div`縮小的倍數(int類型) *返回:* * 返回縮小新圖像 > 不支持壓縮圖像 ***** * [ ] **圖像轉換為灰度圖** ``` .to_grayscale([copy=False]) ``` > 將圖像轉換為灰度圖像 *參數:* * `copy`:為True才能在堆上創建新的修改圖像 *返回:* * 返回灰度圖像對象 > 不支持壓縮圖像 ***** * [ ] **圖像轉換為彩色圖** ``` .to_rgb565([copy=False]) ``` > 將圖像轉換為彩色圖像 *參數:* * `copy`:為True才能在堆上創建新的修改圖像 *返回:* * 返回彩色圖像對象 > 不支持壓縮圖像 ***** * [ ] **圖像轉換為彩虹圖** ``` .to_rainbow([copy=False]) ``` > 將圖像轉換為彩虹圖像 *參數:* * `copy`:為True才能在堆上創建新的修改圖像 *返回:* * 返回彩虹圖像對象 > 不支持壓縮圖像 > 彩虹圖像是彩色圖像,對于圖像中的每個8位掩模灰度照明值具有唯一的顏色值。 例如,它為熱圖像提供熱圖顏色。 ***** * [ ] **復制圖像** ``` .copy([roi[,copy_to_fb=False]]) ``` > 復制一個圖像對象的副本 *參數:* * `Roi`:復制的矩形的感興趣區域`(x, y, w, h)`,若未指定,`Roi`即復制整個圖像的圖像矩形 * `copy_to_fb`:若為True,則將幀緩沖替換為圖像 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **保存圖像** ``` .save(path[,roi[,quality=50]]) ``` > 將圖像的副本保存到`path`中的文件系統。 *參數:* * `path`: 圖像對象路徑, 比如`/sd/MixPY.jpg`,支持`bmp` `pgm` `ppm` `jpg` `jpeg`格式的圖像文件 * `Roi`:保存的矩形的感興趣區域(x, y, w, h),若未指定,`Roi`即保存整個圖像的圖像矩形 *`quality`?:指在圖像尚未被壓縮時將圖像保存為JPEG格式的JPEG壓縮質量 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **像素設置為零** ``` .clear() ``` > 將圖像中的所有像素設置為零 *參數:* * 無 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **繪制直線** ``` .draw_line(x0,y0,x1,y1[,color[,thickness=1]]) ``` > 圖像上繪制一條從(x0,y0)到(x1,y1)的線 *參數:* * `x0`,`y0`,`x1`,`y1`:繪制的直線的起點坐標與終點坐標,可以為單獨傳遞,也可以為元組 * `color`:繪制的直線顏色(默認白色): * `RGB565`16 位的顏色值,比如`0xFFFF` * `RGB888`元組, 比如`(236, 36, 36)` * `GRAYSCALE`灰度圖素值`(0-255)` * `thickness`:控制線的粗細像素 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **繪制矩形** ``` .draw_rectangle(x,y,w,h[,color[,thickness=1[,fill=False]]]) ``` > 圖像上繪制一個矩形 *參數:* * `x`,`y`,`w`,`h`:繪制的矩形的起點坐標與長寬參數,可以為單獨傳遞,也可以為元組 * `color`:繪制的矩形顏色(默認白色): * `RGB565`16 位的顏色值,比如`0xFFFF` * `RGB888`元組, 比如`(236, 36, 36)` * `GRAYSCALE`灰度圖素值`(0-255)` * `thickness`:控制矩形的條框線粗細像素 * `fill`:為True以填充矩形 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **繪制圓形** ``` .draw_circle(x,y,radius[,color[,thickness=1[,fill=False]]]) ``` > 圖像上繪制一個圓形 *參數:* * `x`,`y`,`radius`:繪制的圓形的圓心坐標與半徑,可以為單獨傳遞,也可以為元組 * `color`:繪制的圓形顏色(默認白色): * `RGB565`16 位的顏色值,比如`0xFFFF` * `RGB888`元組, 比如`(236, 36, 36)` * `GRAYSCALE`灰度圖素值`(0-255)` * `thickness`:控制圓形的條框粗細像素 * `fill`:為True以填充圓形 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **繪制文本** ``` .draw_string(x,y,text[,color[,scale=1[,x_spacing=0[,y_spacing=0[,mono_space=True]]]]]) ``` >在 圖像中的(x, y)起點位置開始繪制文本 *參數:* * `x`,`y`:繪制的文本的起點坐標(左上角),可以為單獨傳遞,也可以為元組 * `color`:繪制的圓形顏色(默認白色): * `RGB565`16 位的顏色值,比如`0xFFFF` * `RGB888`元組, 比如`(236, 36, 36)` * `GRAYSCALE`灰度圖素值`(0-255)` * `scale`設置圖像上文本的大小(字號) * `x_spacing`:設置字符間距,字符之間添加(如果是正數)或減去(如果是負數)x像素 * `y_spacing`:設置行間距,字符之間添加(如果是正數)或減去(如果是負數)y像素 * `mono_space`:默認為`True`,強制文本間距固定,設置`False`以獲得非固定寬度的字符間距 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **繪制十字** ``` .draw_cross(x,y[,color[,size=5[,thickness=1]]]) ``` > 圖像上繪制一個十字 *參數:* * `x`,`y`:繪制的十字的中心坐標,可以為單獨傳遞,也可以為元組 * `color`:繪制的圓形顏色(默認白色): * `RGB565`16 位的顏色值,比如`0xFFFF` * `RGB888`元組, 比如`(236, 36, 36)` * `GRAYSCALE`灰度圖素值`(0-255)` * `size`:控制十字的延伸長度像素 * `thickness`:控制十字的條框粗細像素 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **繪制箭頭** ``` .draw_arrow(x0,y0,x1,y1[,color[,thickness=1]]) ``` > 圖像上繪制一個箭頭 *參數:* * `x0`,`y0`,`x1`,`y1`:繪制的箭頭的起點坐標與終點坐標,可以為單獨傳遞,也可以為元組 * `color`:繪制的箭頭顏色(默認白色): * `RGB565`16 位的顏色值,比如`0xFFFF` * `RGB888`元組, 比如`(236, 36, 36)` * `GRAYSCALE`灰度圖素值`(0-255)` * `thickness`:控制箭頭的粗細像素 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **繪制圖像** ``` .draw_image(image,x,y[,x_scale=1.0[,y_scale=1.0[,mask=None]]]) ``` > 繪制一個`image`圖像 *參數:* * `image`:傳入一個`image`類型圖像 * `x`,`y`:繪制的圖像的起點坐標(左上角),可以為單獨傳遞,也可以為元組 * `x_scale`:控制圖像在x方向(浮點數)縮放的程度 * `y_scale`:控制圖像在y方向(浮點數)縮放的程度 * `mask`:繪圖操作的像素級掩碼的圖像。掩碼為一個只有黑色或白色像素的圖像,和繪制的`image`大小相同 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **繪制特征點** ``` .draw_keypoints(keypoints[,color[,size=10[,thickness=1[,fill=False]]]]) ``` > 繪制一個特征點對象的各個點 *參數:* * `keypoints`:傳入一個特征點對象(可以用`.find_keypoints`方法獲取) * `color`:繪制特征點顏色(默認白色): * `RGB565`16 位的顏色值,比如`0xFFFF` * `RGB888`元組, 比如`(236, 36, 36)` * `GRAYSCALE`灰度圖素值`(0-255)` * `size`:控制特征點的大小 * `thickness`:控制線的粗細像素 * `fill`:設置為True以填充特征點 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **填充圖像** ``` .flood_fill(x,y[,seed_threshold=0.05[,floating_threshold=0.05[,color[,invert=False[,clear_background=False[,mask=None]]]]]]) ``` > 像洪水一樣填充圖像中低矮凹陷的地方(洪水填充) *參數:* * `x`,`y`:從`x,y`位置開始填充圖像的區域,可以為單獨傳遞,也可以為元組 * `seed_threshold`:控制填充區域中的像素與原始起始像素的差異 * `floating_threshold`:控制填充區域中的像素與任何相鄰像素的差異 * `color`:區域填充的顏色(默認白色): * `RGB565`16 位的顏色值,比如`0xFFFF` * `RGB888`元組, 比如`(236, 36, 36)` * `GRAYSCALE`灰度圖素值`(0-255)` * `invert`:若為True,以重新填充`flood_fill`連接區域外的所有內容 * `clear_background`:若為True,將其余的`flood_fill`沒有重新著色的像素歸零 * `mask`:繪圖操作的像素級掩碼的圖像。掩碼為一個只有黑色或白色像素的圖像,和繪制的`image`大小相同 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **圖像二值化** ``` .binary(thresholds[,invert=False[,zero=False[,mask=None[,to_bitmap=False[,copy=False]]]]]) ``` > 將給定值追蹤的顏色像素設置為黑、白色二值化 *參數:* * `thresholds`:追蹤的顏色閾值,必須是元組列表`[ ]` * 若灰度圖像,每個元組需要包含兩個值,最小灰度值和最大灰度值 * 若彩色圖像,每個元組需要有六個值`(l_lo,l_hi,a_lo,a_hi,b_lo,b_hi)`,為LAB L,A和B通道的最小值和最大值 * `invert`:若為`True`反轉閾值操作 * `zero`:若為`True`來使閾值像素為零,并使不在閾值列表中的像素保持不變 * `mask`:繪圖操作的像素級掩碼的圖像。掩碼為一個只有黑色或白色像素的圖像,和繪制的`image`大小相同 `to_bitmap`:若為`True`將圖像數據轉換為二進制位圖圖像 `copy`:若為`True`創建二值化映像的副本 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **圖像反轉** ``` .invert() ``` > 翻轉圖像中的所有像素值 *參數:* * 無 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **圖像反轉** ``` .invert() ``` > 翻轉圖像中的所有像素值 *參數:* * 無 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **圖像腐蝕** ``` .erode(size[,threshold[,mask=None]]) ``` > 圖像腐蝕,從分割區域的邊緣刪除像素(白色目標區域) *參數:* * `size`:通過卷積圖像上`((size*2)+1)x((size*2)+1)`像素的核來實現 * ` threshold`:若未設定,功能如標準腐蝕方法一樣。若設定,可以指定腐蝕的特定像素 * `mask`:繪圖操作的像素級掩碼的圖像。掩碼為一個只有黑色或白色像素的圖像,和繪制的`image`大小相同 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **圖像膨脹** ``` .dilate(size[,threshold[,mask=None]]) ``` > 圖像膨脹,將像素添加到分割區域的邊緣中(白色目標區域) *參數:* * `size`:通過卷積圖像上`((size*2)+1)x((size*2)+1)`像素的核來實現 * ` threshold`:若未設定,功能如標準膨脹方法一樣。若設定,可以指定膨脹的特定像素 * `mask`:繪圖操作的像素級掩碼的圖像。掩碼為一個只有黑色或白色像素的圖像,和繪制的`image`大小相同 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **圖像反轉** ``` .negate() ``` > 非常快速地翻轉圖像中的所有像素值 *參數:* * 無 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **圖像替換** ``` .replace(image[,hmirror=False[,vflip=False[,mask=None]]]) ``` > 用新圖像替換原有圖像 *參數:* * `image`:傳入一個`image`類型圖像 * `hmirror`:設置為True以水平鏡像替換圖像。 * `vflip`:設置為True以垂直翻轉替換圖像 * `mask`:繪圖操作的像素級掩碼的圖像。掩碼為一個只有黑色或白色像素的圖像,和繪制的`image`大小相同 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **圖像相加** ``` .add(image[,mask=None]) ``` > 將兩個圖像彼此按像素相加 *參數:* * `image`:傳入一個`image`類型圖像,也可以是RGB888元組或灰度圖像素值 * `mask`:繪圖操作的像素級掩碼的圖像。掩碼為一個只有黑色或白色像素的圖像,和繪制的`image`大小相同 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **圖像相減** ``` .sub(image[,reverse=False[,mask=None]) ``` > 將兩個圖像彼此按像素相減 *參數:* * `image`:傳入一個`image`類型圖像,也可以是RGB888元組或灰度圖像素值 * `reverse`:設置為True可以將減法操作從`this_image-image`反轉為`image-this_image` * `mask`:繪圖操作的像素級掩碼的圖像。掩碼為一個只有黑色或白色像素的圖像,和繪制的`image`大小相同 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **圖像相乘** ``` .mul(image[,invert=False[,mask=None]) ``` > 將兩個圖像彼此按像素相乘 *參數:* * `image`:傳入一個`image`類型圖像,也可以是RGB888元組或灰度圖像素值 * `invert`:設置為True可將乘法運算從`a*b`改為`1/((1/a)*(1/b))`,這使圖像變亮而不是使圖像變暗 * `mask`:繪圖操作的像素級掩碼的圖像。掩碼為一個只有黑色或白色像素的圖像,和繪制的`image`大小相同 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **圖像相除** ``` .div(image[,invert=False[,mask=None]) ``` > 將兩個圖像彼此按像素相除 *參數:* * `image`:傳入一個`image`類型圖像,也可以是RGB888元組或灰度圖像素值 *`invert`:設置為True可將除法方向從`a/b`改為`b/a` * `mask`:繪圖操作的像素級掩碼的圖像。掩碼為一個只有黑色或白色像素的圖像,和繪制的`image`大小相同 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **最小像素值刷選** ``` .min(image[,mask=None]) ``` > 在像素級 用此圖像和另一個圖像之間的最小像素值替換此圖像中的像素 *參數:* * `image`:傳入一個`image`類型圖像,也可以是RGB888元組或灰度圖像素值 * `mask`:繪圖操作的像素級掩碼的圖像。掩碼為一個只有黑色或白色像素的圖像,和繪制的`image`大小相同 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **最大像素值刷選** ``` .max(image[,mask=None]) ``` > 在像素級 用此圖像和另一個圖像之間的最大像素值替換此圖像中的像素 *參數:* * `image`:傳入一個`image`類型圖像,也可以是RGB888元組或灰度圖像素值 * `mask`:繪圖操作的像素級掩碼的圖像。掩碼為一個只有黑色或白色像素的圖像,和繪制的`image`大小相同 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **圖像絕對值** ``` .difference(image[,mask=None]) ``` > 將兩個圖像彼此按像素取絕對值 *參數:* * `image`:傳入一個`image`類型圖像,也可以是RGB888元組或灰度圖像素值 * `mask`:繪圖操作的像素級掩碼的圖像。掩碼為一個只有黑色或白色像素的圖像,和繪制的`image`大小相同 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **圖像融合** ``` .blend(image[,mask=None]) ``` > 將另外一張圖像與這一圖像融合 *參數:* * `image`:傳入一個`image`類型圖像,也可以是RGB888元組或灰度圖像素值 * `mask`:繪圖操作的像素級掩碼的圖像。掩碼為一個只有黑色或白色像素的圖像,和繪制的`image`大小相同 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **直方圖均衡算法** ``` .histeq([adaptive=False[,clip_limit=-1[,mask=None]]]) ``` > 在圖像上運行直方圖均衡算法,直方圖均衡化使圖像中的對比度和亮度標準化 *參數:* * `adaptive`:若為True,將在圖像上運行自適應直方圖均衡方法 * `clip_limit`:提供了一種限制自適應直方圖均衡的對比度的方法 * `mask`:繪圖操作的像素級掩碼的圖像。掩碼為一個只有黑色或白色像素的圖像,和繪制的`image`大小相同 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **均值濾波** ``` .mean(size,[threshold=False, [offset=0, [invert=False, [mask=None]]]]) ``` > 使用盒式濾波器的標準均值模糊濾波 *參數:* *`size`:?是內核的大小,取1 (3x3 內核)、2 (5x5 內核)或更高值 * `threshold`:若為`True`,啟動圖像的自適應閾值處理, 根據環境像素的亮度,將像素設置為1或者0 * `offset`:值將更多像素設置為1,而正值僅將最強對比度設置為1 * `invert`:反轉二進制圖像的結果輸出 * `mask`:繪圖操作的像素級掩碼的圖像。掩碼為一個只有黑色或白色像素的圖像,和繪制的`image`大小相同 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** * [ ] **中值濾波** ``` .median(size,[threshold=False, [offset=0, [invert=False, [mask=None]]]]]) ``` > 使用盒式濾波器的標準均值模糊濾波 *參數:* *`size`:?是內核的大小,取1 (3x3 內核)、2 (5x5 內核)或更高值 * `threshold`:若為`True`,啟動圖像的自適應閾值處理, 根據環境像素的亮度,將像素設置為1或者0 * `offset`:值將更多像素設置為1,而正值僅將最強對比度設置為1 * `invert`:反轉二進制圖像的結果輸出 * `mask`:繪圖操作的像素級掩碼的圖像。掩碼為一個只有黑色或白色像素的圖像,和繪制的`image`大小相同 *返回:* * 返回一個圖像對象 > 不支持壓縮圖像 ***** `image.to_bitmap`(\[*copy=False*\]) Converts an image to a bitmap image (1 bit per pixel). This method modifies the underlying image pixels changing the image size in bytes too so it can only be done in place on a Grayscale or an RGB565 image. Otherwise`copy`must be True to create a new modified image on the heap. Returns the image object so you can call another method using`.`notation. Not supported on compressed images or bayer images. ` `image.draw_image`(*image*,*x*,*y*\[,*x\_scale=1.0*\[,*y\_scale=1.0*\[,*mask=None*\]\]\]) 繪制一個`image`,其左上角從位置x,y開始。 您可以單獨傳遞x,y,也可以傳遞給元組(x,y)。 `x_scale`控制圖像在x方向(浮點數)縮放的程度。 `y_scale`控制圖像在y方向(浮點數)縮放的程度。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 您可以使用mask掩碼進行繪制操作。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.draw_keypoints`(*keypoints*\[,*color*\[,*size=10*\[,*thickness=1*\[,*fill=False*\]\]\]\]) 在圖像上畫出一個特征點對象的各個點。 `color`是用于灰度或RGB565圖像的RGB888元組。默認為白色。但是,您也可以傳遞灰度圖像的基礎像素值(0-255)或RGB565圖像的字節反轉RGB565值。 `size`控制特征點的大小。 `thickness`控制線的粗細像素。 將`fill`設置為True以填充特征點。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.flood_fill`(*x*,*y*\[,*seed\_threshold=0.05*\[,*floating\_threshold=0.05*\[,*color*\[,*invert=False*\[,*clear\_background=False*\[,*mask=None*\]\]\]\]\]\]) 從位置x,y開始填充圖像的區域。 您可以單獨傳遞x,y,也可以傳遞給元組(x,y)。 `seed_threshold`控制填充區域中的像素與原始起始像素的差異。 `floating_threshold`控制填充區域中的像素與任何相鄰像素的差異。 `color`是用于灰度或RGB565圖像的RGB888元組。默認為白色。但是,您也可以傳遞灰度圖像的基礎像素值(0-255)或RGB565圖像的字節反轉RGB565值。 將`invert`傳遞為True,以重新填充flood\_fill連接區域外的所有內容。 將`clear_background`傳遞為True,將其余的flood\_fill沒有重新著色的像素歸零。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩膜中設置的像素會在flood\_fill時被評估。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 此方法在OpenMV Cam M4 上不可用。 `image.binary`(*thresholds*\[,*invert=False*\[,*zero=False*\[,*mask=None*\[,*to\_bitmap=False*\[,*copy=False*\]\]\]\]\]) 根據像素是否在閾值列表`thresholds`中的閾值內,將圖像中的所有像素設置為黑色或白色。 `thresholds`必須是元組列表。`[(lo,hi),(lo,hi),...,(lo,hi)]`定義你想追蹤的顏色范圍。 對于灰度圖像,每個元組需要包含兩個值 - 最小灰度值和最大灰度值。 僅考慮落在這些閾值之間的像素區域。 對于RGB565圖像,每個元組需要有六個值(l\_lo,l\_hi,a\_lo,a\_hi,b\_lo,b\_hi) - 分別是LAB L,A和B通道的最小值和最大值。 為方便使用,此功能將自動修復交換的最小值和最大值。 此外,如果元組大于六個值,則忽略其余值。相反,如果元組太短,則假定其余閾值處于最大范圍。 注解 獲取所跟蹤對象的閾值,只需在IDE幀緩沖區中選擇(單擊并拖動)跟蹤對象。 直方圖會相應地更新到所在區域。然后只需寫下顏色分布在每個直方圖通道中起始與下降位置。 這些將是`thresholds`的低值和高值。 由于上下四分位數據相差微小,故手動確定閾值為佳。 您還可以通過進入OpenMV IDE中的`工具->機器視覺->閾值編輯器`并從GUI窗口中拖動滑塊來確定顏色閾值。 `invert`反轉閾值操作,像素在已知顏色范圍之外進行匹配,而非在已知顏色范圍內。 設置`zero`為True來使閾值像素為零,并使不在閾值列表中的像素保持不變。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 `to_bitmap`turns the image data into a binary bitmap image where each pixel is stored in 1 bit. Set`copy`to True when using`to_bitmap`. `copy`if True creates a copy of the binarized image on the heap versus modifying the source image. 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.invert`() 將二進制圖像0(黑色)變為1(白色),1(白色)變為0(黑色),非常快速地翻轉二進制圖像中的所有像素值。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和Bayer圖像。 `image.b_and`(*image*\[,*mask=None*\]) 用另一圖像與這一圖像進行邏輯與運算。 `image`可以是圖像對象,未壓縮圖像文件的路徑(bmp/pgm/ppm),也可以是標量值。 如果標量值,該值可以是RGB888元組或基礎像素值(例如,灰度圖像的8位灰度級或RGB圖像的字節反轉RGB565值)。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.b_nand`(*image*\[,*mask=None*\]) 用另一圖像與這一圖像進行邏輯與非運算。 `image`可以是圖像對象,未壓縮圖像文件的路徑(bmp/pgm/ppm),也可以是標量值。 如果標量值,該值可以是RGB888元組或基礎像素值(例如,灰度圖像的8位灰度級或RGB圖像的字節反轉RGB565值)。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.b_or`(*image*\[,*mask=None*\]) 用另一圖像與這一圖像進行邏輯或運算。 `image`可以是圖像對象,未壓縮圖像文件的路徑(bmp/pgm/ppm),也可以是標量值。 如果標量值,該值可以是RGB888元組或基礎像素值(例如,灰度圖像的8位灰度級或RGB圖像的字節反轉RGB565值)。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.``b_nor`(*image*\[,*mask=None*\]) 用另一圖像與這一圖像進行邏輯或非運算。 `image`可以是圖像對象,未壓縮圖像文件的路徑(bmp/pgm/ppm),也可以是標量值。 如果標量值,該值可以是RGB888元組或基礎像素值(例如,灰度圖像的8位灰度級或RGB圖像的字節反轉RGB565值)。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.``b_xor`(*image*\[,*mask=None*\]) 用另一圖像與這一圖像進行邏輯異或運算。 `image`可以是圖像對象,未壓縮圖像文件的路徑(bmp/pgm/ppm),也可以是標量值。 如果標量值,該值可以是RGB888元組或基礎像素值(例如,灰度圖像的8位灰度級或RGB圖像的字節反轉RGB565值)。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.``b_xnor`(*image*\[,*mask=None*\]) 用另一圖像與這一圖像進行邏輯同或運算。 `image`可以是圖像對象,未壓縮圖像文件的路徑(bmp/pgm/ppm),也可以是標量值。 如果標量值,該值可以是RGB888元組或基礎像素值(例如,灰度圖像的8位灰度級或RGB圖像的字節反轉RGB565值)。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.``erode`(*size*\[,*threshold*\[,*mask=None*\]\]) 從分割區域的邊緣刪除像素。 這一方法通過卷積圖像上((size\*2)+1)x((size\*2)+1)像素的核來實現,如果相鄰像素集的總和小于`threshold`,則對內核的中心像素進行歸零。 若`threshold`未設定,這個方法的功能如標準腐蝕方法一樣。若threshold設定,您就可以指定腐蝕的特定像素,例如:設置低于2個的像素周圍閾值為2。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.``dilate`(*size*\[,*threshold*\[,*mask=None*\]\]) 將像素添加到分割區域的邊緣中。 這一方法通過卷積圖像上((size\*2)+1)x((size\*2)+1)像素的核來實現,如果相鄰像素集的總和大于`threshold`,則將內核的中心像素進行設置。 若`threshold`未設定,這個方法的功能如標準腐蝕方法一樣。若threshold設定,您就可以指定腐蝕的特定像素,例如:設置低于2個的像素周圍閾值為2。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.``open`(*size*\[,*threshold*\[,*mask=None*\]\]) 按順序對圖像執行腐蝕和膨脹。有關更多信息,請參閱`image.erode()`和`image.dilate()`。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.``close`(*size*\[,*threshold*\[,*mask=None*\]\]) 按順序對圖像執行膨脹和腐蝕。有關更多信息,請參閱`image.erode()`和`image.dilate()`。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.``top_hat`(*size*\[,*threshold*\[,*mask=None*\]\]) 返回原圖像和執行`image.open()`函數后圖像的差異。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 不支持壓縮圖像和bayer圖像。 `image.``black_hat`(*size*\[,*threshold*\[,*mask=None*\]\]) 返回原圖像和執行`image.close()`函數后圖像的差異。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 不支持壓縮圖像和bayer圖像。 `image.``negate`() 非常快速地翻轉(數字反轉)圖像中的所有像素值。對每個顏色通道的像素值進行數值轉換。例: (255 - pixel). 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.``replace`(*image*\[,*hmirror=False*\[,*vflip=False*\[,*mask=None*\]\]\]) `image`可以是圖像對象,未壓縮圖像文件的路徑(bmp/pgm/ppm),也可以是標量值。 如果標量值,該值可以是RGB888元組或基礎像素值(例如,灰度圖像的8位灰度級或RGB圖像的字節反轉RGB565值)。 將`hmirror`設置為True以水平鏡像替換圖像。 將`vflip`設置為True以垂直翻轉替換圖像。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.``add`(*image*\[,*mask=None*\]) 將兩個圖像彼此按像素相加。 `image`可以是圖像對象,未壓縮圖像文件的路徑(bmp/pgm/ppm),也可以是標量值。 如果標量值,該值可以是RGB888元組或基礎像素值(例如,灰度圖像的8位灰度級或RGB圖像的字節反轉RGB565值)。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.``sub`(*image*\[,*reverse=False*\[,*mask=None*\]\]) 將兩個圖像彼此按像素相減。 `image`可以是圖像對象,未壓縮圖像文件的路徑(bmp/pgm/ppm),也可以是標量值。 如果標量值,該值可以是RGB888元組或基礎像素值(例如,灰度圖像的8位灰度級或RGB圖像的字節反轉RGB565值)。 將`reverse`設置為True可以將減法操作從`this_image-image`反轉為`image-this_image`。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.``mul`(*image*\[,*invert=False*\[,*mask=None*\]\]) 將兩個圖像彼此按像素相乘。 `image`可以是圖像對象,未壓縮圖像文件的路徑(bmp/pgm/ppm),也可以是標量值。 如果標量值,該值可以是RGB888元組或基礎像素值(例如,灰度圖像的8位灰度級或RGB圖像的字節反轉RGB565值)。 將`invert`設置為True可將乘法運算從`a*b`改為`1/((1/a)*(1/b))`。 特別是,這使圖像變亮而不是使圖像變暗(例如,乘法與刻錄操作)。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.``div`(*image*\[,*invert=False*\[,*mask=None*\]\]) 將此圖像除以另一個圖像。 `image`可以是圖像對象,未壓縮圖像文件的路徑(bmp/pgm/ppm),也可以是標量值。 如果標量值,該值可以是RGB888元組或基礎像素值(例如,灰度圖像的8位灰度級或RGB圖像的字節反轉RGB565值)。 將`invert`設置為True可將除法方向從`a/b`改為`b/a`。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.``min`(*image*\[,*mask=None*\]) 在像素級 用此圖像和另一個圖像之間的最小像素值替換此圖像中的像素。 `image`可以是圖像對象,未壓縮圖像文件的路徑(bmp/pgm/ppm),也可以是標量值。 如果標量值,該值可以是RGB888元組或基礎像素值(例如,灰度圖像的8位灰度級或RGB圖像的字節反轉RGB565值)。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 這個方法在OpenMV4上不可用. `image.``max`(*image*\[,*mask=None*\]) 在像素級 用此圖像和另一個圖像之間的最大像素值替換此圖像中的像素。 `image`可以是圖像對象,未壓縮圖像文件的路徑(bmp/pgm/ppm),也可以是標量值。 如果標量值,該值可以是RGB888元組或基礎像素值(例如,灰度圖像的8位灰度級或RGB圖像的字節反轉RGB565值)。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.``difference`(*image*\[,*mask=None*\]) 將兩個圖像彼此按像素取絕對值。例:對于每個顏色通道而言,將每個像素替換為ABS(this.pixel-image.pixel)。 `image`可以是圖像對象,未壓縮圖像文件的路徑(bmp/pgm/ppm),也可以是標量值。 如果標量值,該值可以是RGB888元組或基礎像素值(例如,灰度圖像的8位灰度級或RGB圖像的字節反轉RGB565值)。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.``blend`(*image*\[,*alpha=128*\[,*mask=None*\]\]) 將另外一張圖像`image`與這一圖像融合。 `image`可以是圖像對象,未壓縮圖像文件的路徑(bmp/pgm/ppm),也可以是標量值。 如果標量值,該值可以是RGB888元組或基礎像素值(例如,灰度圖像的8位灰度級或RGB圖像的字節反轉RGB565值)。 `alpha`控制要混合到這個圖像中的其他圖像的多少.`alpha`應該是0到256之間的整數值。接近零的值會將更多其他圖像混合到此圖像中,接近256則相反。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.``histeq`(\[*adaptive=False*\[,*clip\_limit=-1*\[,*mask=None*\]\]\]) 在圖像上運行直方圖均衡算法。 直方圖均衡化使圖像中的對比度和亮度標準化。 如果`adaptive`傳遞為True,那么將在圖像上運行自適應直方圖均衡方法,這通常比非自適應直方圖限定更好,但運行時間更長。 `clip_limit`提供了一種限制自適應直方圖均衡的對比度的方法。 使用較小的值(例如10)可以生成良好的直方圖均衡對比度受限圖像。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.``mean`(*size, \[threshold=False, \[offset=0, \[invert=False, \[mask=None\]\]\]\]\]*) 使用盒式濾波器的標準均值模糊濾波。 `Size`?是內核的大小。取1 (3x3 內核)、2 (5x5 內核)或更高值。 如果你想在濾波器的輸出上自適應地設置閾值,你可以傳遞`threshold=True`參數來啟動圖像的自適應閾值處理, 他根據環境像素的亮度(核函數周圍的像素的亮度有關),將像素設置為1或者0。 負數`offset`值將更多像素設置為1,而正值僅將最強對比度設置為1。 設置`invert`以反轉二進制圖像的結果輸出。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `median`(*size, percentile=0.5, threshold=False, offset=0, invert=False, mask\]*) 在圖像上運行中值濾波。在保留邊緣的條件下,中值濾波是用來平滑表面的最佳濾波,但是運行速度極慢。 `Size`?是內核的大小。取1 (3x3 內核)、2 (5x5 內核)或更高值。 `percentile`?控制內核中所使用值的百分位數。默認情況下,每個像素都使用相鄰的第五十個百分位數(中心)替換。使用最小濾波時,您可將此值設置為0,使用下四分位數濾波時設置為0.25,使用上四分位數濾波時設置為0.75,使用最大濾波時設置為1。 如果你想在濾波器的輸出上自適應地設置閾值,你可以傳遞`threshold=True`參數來啟動圖像的自適應閾值處理, 他根據環境像素的亮度(核函數周圍的像素的亮度有關),將像素設置為1或者0。 負數`offset`值將更多像素設置為1,而正值僅將最強對比度設置為1。 設置`invert`以反轉二進制圖像的結果輸出。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 此方法在OpenMV Cam M4 上不可用。 `image.``mode`(*size*\[,*threshold=False*,*offset=0*,*invert=False*,*mask*\]) 在圖像上運行眾數濾波,用相鄰像素的模式替換每個像素。這一方法在灰度圖上運行效果良好。但由于這一操作的非線性特性,會在RGB圖像邊緣上產生許多偽像。 `Size`?是內核的大小。取1 (3x3 內核)、2 (5x5 內核)。 如果你想在濾波器的輸出上自適應地設置閾值,你可以傳遞`threshold=True`參數來啟動圖像的自適應閾值處理, 他根據環境像素的亮度(核函數周圍的像素的亮度有關),將像素設置為1或者0。 負數`offset`值將更多像素設置為1,而正值僅將最強對比度設置為1。 設置`invert`以反轉二進制圖像的結果輸出。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 此方法在OpenMV Cam M4 上不可用。 `image.``midpoint`(*size*\[,*bias=0.5*,*threshold=False*,*offset=0*,*invert=False*,*mask*\]) 在圖像上運行中點濾波。此濾波器找到圖像中每個像素鄰域的中點((max-min)/2)。 `size`是內核的大小。取1 (3x3 內核)、2 (5x5 內核)或更高值。 `bias`控制圖像混合的最小/最大程度。0只適用于最小濾波,1僅用于最大濾波。您可以通過`bias`對圖像進行最小/最大化過濾。 如果你想在濾波器的輸出上自適應地設置閾值,你可以傳遞`threshold=True`參數來啟動圖像的自適應閾值處理, 他根據環境像素的亮度(核函數周圍的像素的亮度有關),將像素設置為1或者0。 負數`offset`值將更多像素設置為1,而正值僅將最強對比度設置為1。 設置`invert`以反轉二進制圖像的結果輸出。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 此方法在OpenMV Cam M4 上不可用。 `image.``morph`(*size*,*kernel*,*mul=Auto*,*add=0*) 通過過濾器內核對圖像進行卷積。這允許您對圖像執行通用卷積。 `size`將內核的大小控制為((size\*2)+1)x((size\*2)+1)像素。 `kernel`用來卷積圖像的內核,可為一個元組或一個取值\[-128:127\]的列表。 `mul`是用以與卷積像素結果相乘的數字。若不設置,則默認一個值,該值將防止卷積輸出中的縮放。 `add`是用來與每個像素卷積結果相加的數值。 `mul`可進行全局對比度調整,add可進行全局亮度調整。 如果你想在濾波器的輸出上自適應地設置閾值,你可以傳遞`threshold=True`參數來啟動圖像的自適應閾值處理, 他根據環境像素的亮度(核函數周圍的像素的亮度有關),將像素設置為1或者0。 負數`offset`值將更多像素設置為1,而正值僅將最強對比度設置為1。 設置`invert`以反轉二進制圖像的結果輸出。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.``gaussian`(*size*\[,*unsharp=False*\[,*mul*\[,*add=0*\[,*threshold=False*\[,*offset=0*\[,*invert=False*\[,*mask=None*\]\]\]\]\]\]\]) 通過平滑高斯核對圖像進行卷積。 `size`是內核的大小。取1 (3x3 內核)、2 (5x5 內核)或更高值。 如果`unsharp`設置為True,那么這種方法不會僅進行高斯濾波操作,而是執行非銳化掩模操作,從而提高邊緣的圖像清晰度。 `mul`是用以與卷積像素結果相乘的數字。若不設置,則默認一個值,該值將防止卷積輸出中的縮放。 `add`是用來與每個像素卷積結果相加的數值。 `mul`可進行全局對比度調整,add可進行全局亮度調整。 如果你想在濾波器的輸出上自適應地設置閾值,你可以傳遞`threshold=True`參數來啟動圖像的自適應閾值處理, 他根據環境像素的亮度(核函數周圍的像素的亮度有關),將像素設置為1或者0。 負數`offset`值將更多像素設置為1,而正值僅將最強對比度設置為1。 設置`invert`以反轉二進制圖像的結果輸出。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `image.``laplacian`(*size*\[,*sharpen=False*\[,*mul*\[,*add=0*\[,*threshold=False*\[,*offset=0*\[,*invert=False*\[,*mask=None*\]\]\]\]\]\]\]) 通過邊緣檢測拉普拉斯核來對圖像進行卷積。 `size`是內核的大小。取1 (3x3 內核)、2 (5x5 內核)或更高值。 如果`sharpen`被設置為True,那么這種方法將改為銳化圖像,而不是僅輸出未經過閾值處理的邊緣檢測圖像。 增加內核大小然后增加圖像清晰度。 `mul`是用以與卷積像素結果相乘的數字。若不設置,則默認一個值,該值將防止卷積輸出中的縮放。 `add`是用來與每個像素卷積結果相加的數值。 `mul`可進行全局對比度調整,add可進行全局亮度調整。 如果你想在濾波器的輸出上自適應地設置閾值,你可以傳遞`threshold=True`參數來啟動圖像的自適應閾值處理, 他根據環境像素的亮度(核函數周圍的像素的亮度有關),將像素設置為1或者0。 負數`offset`值將更多像素設置為1,而正值僅將最強對比度設置為1。 設置`invert`以反轉二進制圖像的結果輸出。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 此方法在OpenMV Cam M4 上不可用。 `image.``bilateral`(*size*\[,*color\_sigma=0.1*\[,*space\_sigma=1*\[,*threshold=False*\[,*offset=0*\[,*invert=False*\[,*mask=None*\]\]\]\]\]\]) 通過雙邊濾波器對圖像進行卷積。 雙邊濾波器使圖像平滑,同時保持圖像中的邊緣。 `size`是內核的大小。取1 (3x3 內核)、2 (5x5 內核)或更高值。 `color_sigma`控制使用雙邊濾波器匹配顏色的接近程度。增加此值可增加顏色模糊。 `space_sigma`控制像素在空間方面相互模糊的程度。增加此值可增加像素模糊。 如果你想在濾波器的輸出上自適應地設置閾值,你可以傳遞`threshold=True`參數來啟動圖像的自適應閾值處理, 他根據環境像素的亮度(核函數周圍的像素的亮度有關),將像素設置為1或者0。 負數`offset`值將更多像素設置為1,而正值僅將最強對比度設置為1。 設置`invert`以反轉二進制圖像的結果輸出。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 此方法在OpenMV Cam M4 上不可用。 `image.``cartoon`(*size*\[,*seed\_threshold=0.05*\[,*floating\_threshold=0.05*\[,*mask=None*\]\]\]) 漫游圖像并使用flood-fills算法填充圖像中的所有像素區域。 這通過使圖像的所有區域中的顏色變平來有效地從圖像中去除紋理。 為了獲得最佳效果,圖像應具有大量對比度,以使區域不會太容易相互滲透。 `seed_threshold`控制填充區域中的像素與原始起始像素的差異。 `floating_threshold`控制填充區域中的像素與任何相鄰像素的差異。 `mask`是另一個用作繪圖操作的像素級掩碼的圖像。掩碼應該是一個只有黑色或白色像素的圖像,并且應該與你正在繪制的`image`大小相同。 僅掩碼中設置的像素被修改。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 此方法在OpenMV Cam M4 上不可用。 `image.``remove_shadows`(\[*image*\]) 從該圖像中移除陰影。 如果當前圖像沒有“無陰影”版本出現,則此方法將嘗試從圖像中去除陰影,但沒有真實無陰影的圖像依據。 這種算法適用于去除平坦均勻背景中的陰影。 請注意,此方法需要多秒才能運行,并且僅適用于實時移除陰影,動態生成無陰影版本的圖像。 該算法的未來版本將適用于更多的環境,但同樣緩慢。 如果當前圖像有“無陰影”版本出現,則此方法將使用“真實源”背景無陰影圖像去除圖像中的所有陰影以濾除陰影。 非陰影像素不會被過濾掉,因此您可以向場景中添加以前不存在的新對象,并且這些對象中的任何非陰影像素都將顯示出來。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 只支持RGB565圖像。 此方法在OpenMV Cam M4 上不可用。 `image.``chrominvar`() 從圖像中刪除照明效果,僅留下顏色漸變。比`image.illuminvar()`更快但受陰影影響。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 僅支持RGB565圖像。 此方法在OpenMV Cam M4 上不可用。 `image.``illuminvar`() 從圖像中刪除照明效果,僅留下顏色漸變。比`image.chrominvar()`慢但不受陰影影響。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 僅支持RGB565圖像。 此方法在OpenMV Cam M4 上不可用。 `image.``linpolar`(\[*reverse=False*\]) 圖像從笛卡爾坐標到線性極坐標重新投影。 設置`reverse=True`可以在相反的方向重新投影。 線性極坐標重新投影將圖像旋轉轉換為x平移。 不支持壓縮圖像。 此方法在OpenMV Cam M4 上不可用。 `image.``logpolar`(\[*reverse=False*\]) 圖像從笛卡爾坐標到對數極坐標重新投影。 設置`reverse=True`可以在相反的方向重新投影。 對數極坐標重新投影將圖像的旋轉轉換為x平移和縮放到y平移。 不支持壓縮圖像。 此方法在OpenMV Cam M4 上不可用。 `image.``lens_corr`(\[*strength=1.8*\[,*zoom=1.0*\]\]) 進行鏡頭畸變校正,以去除鏡頭造成的圖像魚眼效果。 `strength`?是一個浮點數,該值確定了對圖像進行去魚眼效果的程度。在默認情況下,首先試用取值1.8,然后調整這一數值使圖像顯示最佳效果。 `zoom`?是在對圖像進行縮放的數值。默認值為 1.0 。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 `img.``rotation_corr`(\[*x\_rotation=0.0*\[,*y\_rotation=0.0*\[,*z\_rotation=0.0*\[,*x\_translation=0.0*\[,*y\_translation=0.0*\[,*zoom=1.0*\]\]\]\]\]\]) 通過執行幀緩沖區的3D旋轉來糾正圖像中的透視問題。 `x_rotation`是圍繞x軸在幀緩沖器中旋轉圖像的度數(這使圖像上下旋轉)。 `y_rotation`是幀緩沖區中圍繞y軸旋轉圖像的度數(即左右旋轉圖像)。 `z_rotation`是圍繞z軸在幀緩沖器中旋轉圖像的度數(即,使圖像旋轉到適當位置)。 `x_translation`是旋轉后將圖像移動到左側或右側的單位數。因為這個變換是應用在三維空間的,單位不是像素… `y_translation`是旋轉后將圖像上移或下移的單位數。因為這個變換是應用在三維空間的,單位不是像素… `zoom`是通過圖像縮放的量。默認情況下1.0。 返回圖像對象,以便您可以使用`.`表示法調用另一個方法。 不支持壓縮圖像和bayer圖像。 此方法在OpenMV Cam M4 上不可用。 `image.``get_similarity`(*image*) 返回一個“相似度”對象,描述兩幅圖像使用SSIM算法來比較兩幅圖像之間的8x8像素色塊的相似度。 `image`可以是圖像對象,未壓縮圖像文件的路徑(bmp/pgm/ppm),也可以是標量值。 如果標量值,該值可以是RGB888元組或基礎像素值(例如,灰度圖像的8位灰度級或RGB圖像的字節反轉RGB565值)。 不支持壓縮圖像和bayer圖像。 此方法在OpenMV Cam M4 上不可用。 `image.``get_histogram`(\[*thresholds*\[,*invert=False*\[,*roi*\[,*bins*\[,*l\_bins*\[,*a\_bins*\[,*b\_bins*\]\]\]\]\]\]\]) 在`roi`的所有顏色通道上進行標準化直方圖運算,并返回`histogram`對象。 請參考`histogram`對象以獲取更多信息。您也可以使用`image.get_hist`或`image.histogram`來調用這一方法。如果傳遞`thresholds`列表,則直方圖信息將僅從閾值列表中的像素計算得出。 `thresholds`必須是元組列表。`[(lo,hi),(lo,hi),...,(lo,hi)]`定義你想追蹤的顏色范圍。 對于灰度圖像,每個元組需要包含兩個值 - 最小灰度值和最大灰度值。 僅考慮落在這些閾值之間的像素區域。 對于RGB565圖像,每個元組需要有六個值(l\_lo,l\_hi,a\_lo,a\_hi,b\_lo,b\_hi) - 分別是LAB L,A和B通道的最小值和最大值。 為方便使用,此功能將自動修復交換的最小值和最大值。 此外,如果元組大于六個值,則忽略其余值。相反,如果元組太短,則假定其余閾值處于最大范圍。 注解 獲取所跟蹤對象的閾值,只需在IDE幀緩沖區中選擇(單擊并拖動)跟蹤對象。 直方圖會相應地更新到所在區域。然后只需寫下顏色分布在每個直方圖通道中起始與下降位置。 這些將是`thresholds`的低值和高值。 由于上下四分位數據相差微小,故手動確定閾值為佳。 您還可以通過進入OpenMV IDE中的`工具->機器視覺->閾值編輯器`并從GUI窗口中拖動滑塊來確定顏色閾值。 `invert`反轉閾值操作,像素在已知顏色范圍之外進行匹配,而非在已知顏色范圍內。 除非您需要使用顏色統計信息進行高級操作,否則只需使用`image.get\_statistics()` 方法代替此方法查看圖像中的像素區域。 `roi`是感興趣區域的矩形元組(x,y,w,h)。如果未指定,ROI即整個圖像的圖像矩形。 操作范圍僅限于`roi`區域內的像素。 `bins`和其他bin是用于直方圖通道的箱數。對于灰度圖像,使用`bins`, 對于RGB565圖像,使用其他每個通道。每個通道的bin計數必須大于2。 另外,將bin計數設置為大于每個通道的唯一像素值的數量是沒有意義的。 默認情況下,直方圖將具有每個通道的最大bin數。 不支持壓縮圖像和bayer圖像。 `image.``get_statistics`(\[*thresholds*\[,*invert=False*\[,*roi*\[,*bins*\[,*l\_bins*\[,*a\_bins*\[,*b\_bins*\]\]\]\]\]\]\]) 計算`roi`中每個顏色通道的平均值、中值、眾值、標準偏差、最小值、最大值、下四分值和上四分值,并返回一個數據對象。 請參見`statistics`對象以獲取更多信息。您也可以使用`image.get_stats`或`image.statistics`來調用這一方法。 如果傳遞`thresholds`列表,則直方圖信息將僅從閾值列表中的像素計算得出。 `thresholds`必須是元組列表。`[(lo,hi),(lo,hi),...,(lo,hi)]`定義你想追蹤的顏色范圍。 對于灰度圖像,每個元組需要包含兩個值 - 最小灰度值和最大灰度值。 僅考慮落在這些閾值之間的像素區域。 對于RGB565圖像,每個元組需要有六個值(l\_lo,l\_hi,a\_lo,a\_hi,b\_lo,b\_hi) - 分別是LAB L,A和B通道的最小值和最大值。 為方便使用,此功能將自動修復交換的最小值和最大值。 此外,如果元組大于六個值,則忽略其余值。相反,如果元組太短,則假定其余閾值處于最大范圍。 注解 獲取所跟蹤對象的閾值,只需在IDE幀緩沖區中選擇(單擊并拖動)跟蹤對象。 直方圖會相應地更新到所在區域。然后只需寫下顏色分布在每個直方圖通道中起始與下降位置。 這些將是`thresholds`的低值和高值。 由于上下四分位數據相差微小,故手動確定閾值為佳。 您還可以通過進入OpenMV IDE中的`工具->機器視覺->閾值編輯器`并從GUI窗口中拖動滑塊來確定顏色閾值。 `invert`反轉閾值操作,像素在已知顏色范圍之外進行匹配,而非在已知顏色范圍內。 您可以在需要獲取圖像中一個像素區域信息時使用這一方法。例如:若您想用幀差法來檢測運動時, 您需要使用這一方法來確定圖像顏色通道的變化,從而觸發運動檢測閾值。 `roi`是感興趣區域的矩形元組(x,y,w,h)。如果未指定,ROI即整個圖像的圖像矩形。 操作范圍僅限于`roi`區域內的像素。 `bins`和其他bin是用于直方圖通道的箱數。對于灰度圖像,使用`bins`, 對于RGB565圖像,使用其他每個通道。每個通道的bin計數必須大于2。 另外,將bin計數設置為大于每個通道的唯一像素值的數量是沒有意義的。 默認情況下,直方圖將具有每個通道的最大bin數。 不支持壓縮圖像和bayer圖像。 `image.``get_regression`(*thresholds*\[,*invert=False*\[,*roi*\[,*x\_stride=2*\[,*y\_stride=1*\[,*area\_threshold=10*\[,*pixels\_threshold=10*\[,*robust=False*\]\]\]\]\]\]\]) 對圖像所有閾值像素進行線性回歸計算。這一計算通過最小二乘法進行,通常速度較快,但不能處理任何異常值。 若`robust`為True,則使用Theil-Sen線性回歸算法,它計算圖像中所有閾值像素的斜率的中位數。 若在閾值處理后有太多像素,即使在80x60的圖像上,這個O(N^2)操作也可能將您的FPS降到5幀以下。 但是,只要閾值轉換后的像素數量較少,即使在高達30%的閾值像素是異常值的情況下也依然有效,魯棒性好。 這一方法返回的是一個`image.line`對象。如何輕松運用直線對象, `thresholds`必須是元組列表。`[(lo,hi),(lo,hi),...,(lo,hi)]`定義你想追蹤的顏色范圍。 對于灰度圖像,每個元組需要包含兩個值 - 最小灰度值和最大灰度值。 僅考慮落在這些閾值之間的像素區域。 對于RGB565圖像,每個元組需要有六個值(l\_lo,l\_hi,a\_lo,a\_hi,b\_lo,b\_hi) - 分別是LAB L,A和B通道的最小值和最大值。 為方便使用,此功能將自動修復交換的最小值和最大值。 此外,如果元組大于六個值,則忽略其余值。相反,如果元組太短,則假定其余閾值處于最大范圍。 注解 獲取所跟蹤對象的閾值,只需在IDE幀緩沖區中選擇(單擊并拖動)跟蹤對象。 直方圖會相應地更新到所在區域。然后只需寫下顏色分布在每個直方圖通道中起始與下降位置。 這些將是`thresholds`的低值和高值。 由于上下四分位數據相差微小,故手動確定閾值為佳。 您還可以通過進入OpenMV IDE中的`工具->機器視覺->閾值編輯器`并從GUI窗口中拖動滑塊來確定顏色閾值。 `invert`反轉閾值操作,像素在已知顏色范圍之外進行匹配,而非在已知顏色范圍內。 `roi`是感興趣區域的矩形元組(x,y,w,h)。如果未指定,ROI即整個圖像的圖像矩形。 操作范圍僅限于`roi`區域內的像素。 `x_stride`是調用函數時要跳過的x像素數。 `y_stride`是調用函數時要跳過的y像素數。 如果回歸后的邊界框區域小于`area_threshold`,則返回None。 如果回歸后的像素數小于`pixel_threshold`,則返回None。 不支持壓縮圖像和bayer圖像。 `image.``find_blobs`(*thresholds*\[,*invert=False*\[,*roi*\[,*x\_stride=2*\[,*y\_stride=1*\[,*area\_threshold=10*\[,*pixels\_threshold=10*\[,*merge=False*\[,*margin=0*\[,*threshold\_cb=None*\[,*merge\_cb=None*\]\]\]\]\]\]\]\]\]\]) 查找圖像中所有色塊,并返回一個包括每個色塊的色塊對象的列表。請觀察`image.blob`對象以獲取更多信息。 `thresholds`必須是元組列表。`[(lo,hi),(lo,hi),...,(lo,hi)]`定義你想追蹤的顏色范圍。 對于灰度圖像,每個元組需要包含兩個值 - 最小灰度值和最大灰度值。 僅考慮落在這些閾值之間的像素區域。 對于RGB565圖像,每個元組需要有六個值(l\_lo,l\_hi,a\_lo,a\_hi,b\_lo,b\_hi) - 分別是LAB L,A和B通道的最小值和最大值。 為方便使用,此功能將自動修復交換的最小值和最大值。 此外,如果元組大于六個值,則忽略其余值。相反,如果元組太短,則假定其余閾值處于最大范圍。 注解 獲取所跟蹤對象的閾值,只需在IDE幀緩沖區中選擇(單擊并拖動)跟蹤對象。 直方圖會相應地更新到所在區域。然后只需寫下顏色分布在每個直方圖通道中起始與下降位置。 這些將是`thresholds`的低值和高值。 由于上下四分位數據相差微小,故手動確定閾值為佳。 您還可以通過進入OpenMV IDE中的`工具->機器視覺->閾值編輯器`并從GUI窗口中拖動滑塊來確定顏色閾值。 `invert`反轉閾值操作,像素在已知顏色范圍之外進行匹配,而非在已知顏色范圍內。 `roi`是感興趣區域的矩形元組(x,y,w,h)。如果未指定,ROI即整個圖像的圖像矩形。 操作范圍僅限于`roi`區域內的像素。 `x_stride`是查找某色塊時需要跳過的x像素的數量。找到色塊后,直線填充算法將精確像素。 若已知色塊較大,可增加`x_stride`來提高查找色塊的速度。 `y_stride`是查找某色塊時需要跳過的y像素的數量。找到色塊后,直線填充算法將精確像素。 若已知色塊較大,可增加`y_stride`來提高查找色塊的速度。 若一個色塊的邊界框區域小于`area_threshold`,則會被過濾掉。 若一個色塊的像素數小于`pixel_threshold`,則會被過濾掉。 `merge`若為True,則合并所有沒有被過濾掉的色塊,這些色塊的邊界矩形互相交錯重疊。`margin`可在相交測試中用來增大或減小色塊邊界矩形的大小。例如:邊緣為1、相互間邊界矩形為1的色塊將被合并。 合并色塊使顏色代碼追蹤得以實現。每個色塊對象有一個代碼值`code`,該值為一個位向量。 例如:若您在`image.find_blobs`中輸入兩個顏色閾值,則第一個閾值代碼為1,第二個代碼為2(第三個代碼為4,第四個代碼為8,以此類推)。 合并色塊對所有的code使用邏輯或運算,以便您知道產生它們的顏色。這使得您可以追蹤兩個顏色,若您用兩種顏色得到一個色塊對象,則可能是一種顏色代碼。 若您使用嚴格的顏色范圍,無法完全追蹤目標對象的所有像素,您可能需要合并色塊。 最后,若您想要合并色塊,但不想兩種不同閾值顏色的色塊被合并,只需分別兩次調用`image.find_blobs`,不同閾值色塊就不會被合并。 `threshold_cb`可設置為用以調用閾值篩選后的每個色塊的函數,以便將其從將要合并的色塊列表中過濾出來。 回調函數將收到一個參數:要被篩選的色塊對象。然后回調函數需返回True以保留色塊或返回False以過濾色塊。 `merge_cb`可設置為用以調用兩個即將合并的色塊的函數,以禁止或準許合并。回調函數將收到兩個參數—兩個將被合并的色塊對象。 回調函數須返回True以合并色塊,或返回False以防止色塊合并。 不支持壓縮圖像和bayer圖像。 `image.``find_lines`(\[*roi*\[,*x\_stride=2*\[,*y\_stride=1*\[,*threshold=1000*\[,*theta\_margin=25*\[,*rho\_margin=25*\]\]\]\]\]\]) 使用霍夫變換查找圖像中的所有直線。返回一個`image.line`對象的列表。 `roi`是感興趣區域的矩形元組(x,y,w,h)。如果未指定,ROI即整個圖像的圖像矩形。操作范圍僅限于`roi`區域內的像素。 `x_stride`是霍夫變換時需要跳過的x像素的數量。若已知直線較大,可增加`x_stride`。 `y_stride`是霍夫變換時需要跳過的y像素的數量。若已知直線較大,可增加`y_stride`。 `threshold`控制從霍夫變換中監測到的直線。只返回大于或等于`threshold`的直線。 應用程序的正確的`threshold`值取決于圖像。注意:一條直線的模(magnitude)是組成直線所有sobel濾波像素大小的總和。 `theta_margin`控制所監測的直線的合并。 直線角度為`theta_margin`的部分和直線p值為`rho_margin`的部分合并。 `rho_margin`控制所監測的直線的合并。 直線角度為`theta_margin`的部分和直線p值為`rho_margin`的部分合并。 該方法通過在圖像上運行索貝爾濾波器,并利用該濾波器的幅值和梯度響應來進行霍夫變換。 無需對圖像進行任何預處理。但是,清理圖像過濾器可得到更為穩定的結果。 不支持壓縮圖像和bayer圖像。 此方法在OpenMV Cam M4 上不可用。 `image.``find_line_segments`(\[*roi*\[,*merge\_distance=0*\[,*max\_theta\_difference=15*\]\]\]) 使用霍夫轉換來查找圖像中的線段。返回一個?`image.line`對象的列表。 `roi`是一個用以復制的矩形的感興趣區域(x, y, w, h)。如果未指定,`ROI`即圖像矩形。操作范圍僅限于roi區域內的像素。 `merge_distance`指定兩條線段之間的可以相互分開而不被合并的最大像素數。 `max_theta_difference`是上面`merge_distancede`要合并的的兩個線段的最大角度差值。 此方法使用LSD庫來查找圖像中的線段。這有點慢,但是非常準確,線段不會跳躍。 不支持壓縮圖像和bayer圖像。 此方法在OpenMV Cam M4 上不可用。 `image.``find_circles`(\[*roi*\[,*x\_stride=2*\[,*y\_stride=1*\[,*threshold=2000*\[,*x\_margin=10*\[,*y\_margin=10*\[,*r\_margin=10*\[,*r\_min=2*\[,*r\_max*\[,*r\_step=2*\]\]\]\]\]\]\]\]\]\]) 使用霍夫變換在圖像中查找圓。返回一個`image.circle`對象列表(見上)。 `roi`是一個用以復制的矩形的感興趣區域(x, y, w, h)。如果未指定,`ROI`即圖像矩形。操作范圍僅限于roi區域內的像素。 `x_stride`是霍夫變換時需要跳過的x像素的數量。若已知圓較大,可增加`x_stride`。 `y_stride`是霍夫變換時需要跳過的y像素的數量。若已知圓較大,可增加`y_stride`。 `threshold`控制從霍夫變換中監測到的圓。只返回大于或等于`threshold`的圓。 應用程序的正確的`threshold`值取決于圖像。注意:一個圓的大小(magnitude)是組成圓所有索貝爾濾波像素大小的總和。 `x_margin`控制所檢測的圓的合并。?圓像素為`x_margin`、`y_margin`和`r_margin`?的部分合并。 `y_margin`控制所檢測的圓的合并。?圓像素為`x_margin`、`y_margin`和`r_margin`?的部分合并。 `r_margin`控制所檢測的圓的合并。?圓像素為`x_margin`、`y_margin`和`r_margin`?的部分合并。 `r_min`controls the minimum circle radius detected. Increase this to speed up the algorithm. Defaults to 2. `r_max`controls the maximum circle radius detected. Decrease this to speed up the algorithm. Defaults to min(roi.w/2, roi.h/2). `r_step`controls how to step the radius detection by. Defaults to 2. 不支持壓縮圖像和bayer圖像。 此方法在OpenMV Cam M4 上不可用。 `image.``find_rects`(\[*roi=Auto*,*threshold=10000*\]) 使用用于查找AprilTAg的相同的quad detection算法來查找圖像中的矩形。 最適用與背景形成鮮明對比的矩形。AprilTag的quad detection可以處理任意縮放/旋轉/剪切的矩形。 返回一個`image.rect`對象的列表。 `roi`?是一個用以復制的矩形的感興趣區域(x, y, w, h)。如果未指定, ROI即圖像矩形。操作范圍僅限于`roi`區域內的像素。 邊界大小(通過在矩形邊緣上的所有像素上滑動索貝爾算子并相加該值)小于?`threshold`的矩形會從返回列表中過濾出來。`threshold`的正確值取決于您的應用程序/場景。 不支持壓縮圖像和bayer圖像。 此方法在OpenMV Cam M4 上不可用。 `image.``find_qrcodes`(\[*roi*\]) 查找`roi`內的所有二維碼并返回一個`image.qrcode`對象的列表。 請參考`image.qrcode`對象以獲取更多信息。 為使這一方法成功運行,圖像上二維碼需比較平展。通過使用`sensor.set_windowing`?函數在鏡頭中心放大、`image.lens_corr`?函數來消解鏡頭的桶形畸變或通過更換視野較為狹小的鏡頭, 您可得到一個不受鏡頭畸變影響的更為平展的二維碼。有些機器視覺鏡頭不會造成桶形失真,但是其造價遠比OpenMV提供的標準鏡片高,這種鏡頭為無畸變鏡頭。 `roi`?是一個用以復制的矩形的感興趣區域(x, y, w, h)。如果未指定,ROI即整幅圖像的圖像矩形。 操作范圍僅限于`roi`區域內的像素。 不支持壓縮圖像和bayer圖像。 此方法在OpenMV Cam M4 上不可用。 `image.``find_apriltags`(\[*roi*\[,*families=image.TAG36H11*\[,*fx*\[,*fy*\[,*cx*\[,*cy*\]\]\]\]\]\]) 查找`roi`內的所有AprilTag, 并返回一個`image.apriltag`對象的列表。請參考?`image.apriltag`對象以獲取更多信息。 與二維碼相比,AprilTags可在更遠距離、較差光線和更扭曲的圖像環境下被檢測到。 AprilTags可應對所有種類的圖像失真問題,而二維碼并不能。也就是說,AprilTags只能將數字ID編碼作為其有效載荷。 AprilTags也可用于本地化。每個`image.apriltag`對象都從攝像機返回其三維位置信息和旋轉角度。 位置信息由`fx`、`fy`、`cx`和`cy`決定,分別為X和Y方向上圖像的焦距和中心點。 注解 使用OpenMV IDE內置的標簽生成器工具來創建AprilTags。標簽生成器可創建可打印的8.5“x11”AprilTags。 `roi`?是一個用以復制的矩形的感興趣區域(x, y, w, h)。如果未指定,ROI即整幅圖像的圖像矩形。 操作范圍僅限于`roi`區域內的像素。 `families`是要解碼的標簽家族的位掩碼。是一個邏輯或: > * `image.TAG16H5` > * `image.TAG25H7` > * `image.TAG25H9` > * `image.TAG36H10` > * `image.TAG36H11` > * `image.ARTOOLKIT` 默認設置為最好用的?`image.TAG36H11`標簽家族。注意:每啟用一個標簽家族,`find_apriltags`的速度都會略有放慢。 `fx`是以像素為單位的相機x方向的焦距。標準OpenMV Cam的值為(2.8 / 3.984) \* 656, 該值通過毫米計的焦距值除以X方向上感光元件的長度,再乘以X方向上感光元件的像素數量得來(對OV7725感光元件而言)。 `fy`是以像素為單位的相機y方向的焦距。標準OpenMV Cam的值為(2.8 / 2.952) \* 488, 該值通過毫米計的焦距值除以Y方向上感光元件的長度,再乘以Y方向上感光元件的像素數量得來(對OV7725感光元件而言)。 `cx`是圖像的中心,即`image.width()/2`,而非`roi.w()/2`。 `cy`是圖像的中心,即`image.height()/2`,而非`roi.h()/2`。 不支持壓縮圖像和bayer圖像。 此方法在OpenMV Cam M4 上不可用。 `image.``find_datamatrices`(\[*roi*\[,*effort=200*\]\]) 查找`roi`內的所有數據矩陣并返回一個`image.datamatrix`對象的列表。 請參考`image.datamatrix`對象以獲取更多信息。 為使這一方法成功運行,圖像上矩形碼需比較平展。通過使用`sensor.set_windowing`函數在鏡頭中心放大、`image.lens_corr`?函數來消解鏡頭的桶形畸變或通過更換視野較為狹小的鏡頭,您可得到一個不受鏡頭畸變影響的更為平展的矩形碼。 有些機器視覺鏡頭不會造成桶形失真,但是其造價遠比OpenMV提供的標準鏡片高,這種鏡頭是無畸變鏡頭。 `roi`是一個用以復制的矩形的感興趣區域(x, y, w, h)。如果未指定,ROI即整幅圖像的圖像矩形。操作范圍僅限于`roi`區域內的像素。 `effort`控制用于查找矩形碼匹配的時間。默認值為200應該適用于所有用例。 但是您也可能以幀速率為代價增加檢測,或以檢測為代價增加幀速率。 注意:若`effort`設置在約160以下,您就無法進行任何檢測;相反,您可將其設置為您需要的任何高值,但是若設置值高于240,檢測率將不會繼續隨之提高。 不支持壓縮圖像和bayer圖像。 此方法在OpenMV Cam M4 上不可用。 `image.``find_barcodes`(\[*roi*\]) 查找`roi`內所有一維條形碼并返回一個`image.barcode`對象列表。 請參考?`image.barcode`對象以獲取更多信息。 為了獲得最佳效果,請使用長640、寬40/80/160窗口。垂直程度越低,運行速度越快。由于條形碼是線性一維圖像,所以只需在一個方向上有較高分辨率, 而在另一方向上只需較低分辨率。注意:該函數進行水平和垂直掃描,所以您可使用寬40/80/160、長480的窗口。 最后,請一定調整鏡頭,這樣條形碼會定位在焦距產生最清晰圖像的地方。模糊條碼無法被解碼。 該函數支持所有一維條形碼: > * `image.EAN2` > * `image.EAN5` > * `image.EAN8` > * `image.UPCE` > * `image.ISBN10` > * `image.UPCA` > * `image.EAN13` > * `image.ISBN13` > * `image.I25` > * `image.DATABAR` > * `image.DATABAR_EXP` > * `image.CODABAR` > * `image.CODE39` > * `image.PDF417` > * `image.CODE93` > * `image.CODE128` `roi`是一個用以復制的矩形的感興趣區域(x, y, w, h)。如果未指定,ROI即整幅圖像的圖像矩形。操作范圍僅限于`roi`區域內的像素。 不支持壓縮圖像和bayer圖像。 此方法在OpenMV Cam M4 上不可用。 `image.``find_displacement`(*template*\[,*roi*\[,*template\_roi*\[,*logpolar=False*\]\]\]) 從模板中查找此圖像的變換偏移量。 這種方法可以用來做光流。 此方法返回一個`image.displacement`對象,其中包含使用相位相關的位移計算結果。 `roi`是需要處理的矩形區域(x,y,w,h)。如果未指定,則等于圖像矩形。 `template_roi`是需要處理的矩形區域(x,y,w,h)。如果未指定,則等于圖像矩形。 `roi`和`template`roi必須具有相同的w/h,但x/y可以為圖像任意位置。您可以在較大圖像上滑動較小的rois以獲得光流漸變圖像. `image.find_displacement`通常計算兩個圖像之間的x/y平移。但是,如果您設置`logpolar=True`, 它將會在兩個圖像之間找到旋轉和縮放比例的變化。相同的`image.displacement`對象結果兩種可能的反饋。 不支持壓縮圖像和bayer圖像。 注解 請在長寬一致的圖像(例如``sensor.B64X64``)上使用此方法。 此方法在OpenMV Cam M4 上不可用。 `image.``find_number`(*roi*) 運行在MINST數據集上訓練的LENET-6 CNN(卷積神經網絡),以檢測位于圖像上任何位置的28x28 ROI中的數字。 返回一個包含整數和浮點數的元組,表示檢測到的數字(0-9)和檢測的置信度(0-1)。 `roi`是感興趣區域的矩形元組(x,y,w,h)。如果未指定,ROI即整個圖像的圖像矩形。 操作范圍僅限于`roi`區域內的像素。 僅支持灰度圖像。 注解 這種方法是實驗性的。如果未來運行使用Caffe在PC上訓練的任何CNN,這種方法可能會刪除。 最新3.0.0版本固件已刪除此函數。 此方法在OpenMV Cam M4 上不可用。 `image.``classify_object`(*roi*) 在圖像的ROI上運行CIFAR-10 CNN,以檢測飛機,汽車,鳥類,貓,鹿,狗,青蛙,馬,船和卡車。 此方法在內部自動將圖像縮放到32x32以饋送到CNN。 `roi`是感興趣區域的矩形元組(x,y,w,h)。如果未指定,ROI即整個圖像的圖像矩形。 操作范圍僅限于`roi`區域內的像素。 僅支持RGB565圖像。 注解 這種方法是實驗性的。如果未來運行使用Caffe在PC上訓練的任何CNN,這種方法可能會刪除。 `image.``find_template`(*template*,*threshold*\[,*roi*\[,*step=2*\[,*search=image.SEARCH\_EX*\]\]\]) 嘗試使用歸一化互相關(NCC)算法在圖像中找到第一個模板匹配的位置。返回匹配位置的邊界框元組(x, y, w, h),否則返回None。 `template`是一個與這個圖像對象相匹配的小圖像對象。注意:兩圖像須都為灰度圖。 `threshold`是浮點數(0.0-1.0),其中較小的值在提高檢測速率同時增加誤報率。相反,較高的值會降低檢測速率,同時降低誤報率。 `roi`是感興趣區域的矩形元組(x,y,w,h)。如果未指定,ROI即整個圖像的圖像矩形。 操作范圍僅限于`roi`區域內的像素。 `step`是查找模板時需要跳過的像素數量。跳過像素可大大提高算法運行的速度。該方法只適用于SERACH\_EX模式下的算法。 `search`可為`image.SEARCH_DS`or`image.SEARCH_EX`.`image.SEARCH_DS`搜索模板所用算法較`image.SEARCH_EX`更快,但若模板位于圖像邊緣周圍,可能無法成功搜索。`image.SEARCH_EX`?可對圖像進行較為詳盡的搜索,但其運行速度遠低于`image.SEARCH_DS`。 僅支持灰度圖像。 `image.``find_features`(*cascade*\[,*threshold=0.5*\[,*scale=1.5*\[,*roi*\]\]\]) 這個方法搜索與Haar Cascade匹配的所有區域的圖像,并返回一個關于這些特征的邊界框矩形元組(x,y,w,h)的列表。若未發現任何特征,則返回一個空白列表。 `cascade`是一個Haar Cascade對象。詳細信息請查看`image.HaarCascade()`。 `threshold`是浮點數(0.0-1.0),其中較小的值在提高檢測速率同時增加誤報率。相反,較高的值會降低檢測速率,同時降低誤報率。 `scale`是一個必須大于1.0的浮點數。較高的比例因子運行更快,但其圖像匹配相應較差。理想值介于1.35-1.5之間。 `roi`是感興趣區域的矩形元組(x,y,w,h)。如果未指定,ROI即整個圖像的圖像矩形。 操作范圍僅限于`roi`區域內的像素。 `image.``find_eye`(*roi*) 在眼睛周圍的感興趣區域(x, y, w, h)查找瞳孔。返回一個包含圖像中瞳孔(x,y)位置的元組。若未發現瞳孔,則返回(0,0)。 使用這一函數之前,需首先使用`image.find_features()`和Haar算子`frontalface`?來搜索某人面部。 然后使用`image.find_features`和Haar算子`find_eye`在面部搜索眼睛。 最后,在調用`image.find_features`函數后返回的每個眼睛ROI上調用這一方法,以得到瞳孔的坐標。 `roi`是感興趣區域的矩形元組(x,y,w,h)。如果未指定,ROI即整個圖像的圖像矩形。 操作范圍僅限于`roi`區域內的像素。 僅支持灰度圖像。 `image.``find_lbp`(*roi*) 從ROI元組(x, y, w, h)中提取LBP(局部二值模式)鍵點。您可以使用`image.match_descriptor`函數來比較兩組關鍵點,以獲取匹配距離。 `roi`是感興趣區域的矩形元組(x,y,w,h)。如果未指定,ROI即整個圖像的圖像矩形。 操作范圍僅限于`roi`區域內的像素。 僅支持灰度圖像。 `image.``find_keypoints`(\[*roi*\[,*threshold=20*\[,*normalized=False*\[,*scale\_factor=1.5*\[,*max\_keypoints=100*\[,*corner\_detector=image.CORNER\_AGAST*\]\]\]\]\]\]) 從ROI元組(x, y, w, h)中提取ORB鍵點。您可以使用`image.match_descriptor`函數來比較兩組關鍵點,以獲取匹配區域。若未發現關鍵點,則返回None。 `roi`是感興趣區域的矩形元組(x,y,w,h)。如果未指定,ROI即整個圖像的圖像矩形。 操作范圍僅限于`roi`區域內的像素。 `threshold`是控制提取的數量的數字(取值0-255)。對于默認的AGAST角點檢測器,該值應在20左右。 對于FAST角點檢測器,該值約為60-80。閾值越低,您提取的角點越多。 `normalized`是布爾值。若為True,在多分辨率下關閉提取鍵點。 若您不關心處理擴展問題,且希望算法運行更快,就將之設置為True。 `scale_factor`是一個必須大于1.0的浮點數。較高的比例因子運行更快,但其圖像匹配相應較差。理想值介于1.35-1.5之間。 `max_keypoints`是一個鍵點對象所能容納的鍵點最大數量。若鍵點對象過大導致內存問題,請降低該值。 `corner_detector`是從圖像中提取鍵點所使用的角點檢測器算法。 可為`image.CORNER_FAST`。FAST角點檢測器運行速度更快,但其準確度較低。 僅支持灰度圖像。 `image.``find_edges`(*edge\_type*\[,*threshold*\]) 將圖像變為黑白,僅將邊緣保留為白色像素。 > * image.EDGE\_SIMPLE - 簡單的閾值高通濾波算法 > * image.EDGE\_CANNY - Canny邊緣檢測算法 `threshold`是一個包含一個低閾值和一個高閾值的二值元組。您可以通過調整該值來控制邊緣質量。 默認為 (100, 200)。 僅支持灰度圖像。 `find_hog`(\[*roi*\[,*size=8*\]\]) 用HOG(定向梯度直方圖)線替換ROI中的像素。 `roi`是感興趣區域的矩形元組(x,y,w,h)。如果未指定,ROI即整個圖像的圖像矩形。 操作范圍僅限于`roi`區域內的像素。 僅支持灰度圖像。 此方法在OpenMV Cam M4 上不可用。 ## 常量 `image.``SEARCH_EX` 詳盡的模板匹配搜索。 `image.``SEARCH_DS` 更快的模板匹配搜索。 `image.``EDGE_CANNY` 使用Canny邊緣檢測算法對圖像進行邊緣檢測。 `image.``EDGE_SIMPLE` 使用閾值高通濾波算法對圖像進行邊緣檢測。 `image.``CORNER_FAST` 用于ORB鍵點的高速低準確率角點檢測算法 `image.``CORNER_AGAST` 用于ORB鍵點的低速高準確率算法。 `image.``TAG16H5` TAG1H5標簽群的位掩碼枚舉。用于AprilTags。 `image.``TAG25H7` TAG25H7標簽群的位掩碼枚舉。用于AprilTags。 `image.``TAG25H9` TAG25H9標簽群的位掩碼枚舉。用于AprilTags。 `image.``TAG36H10` TAG36H10標簽群的位掩碼枚舉。用于AprilTags。 `image.``TAG36H11` TAG36H11標簽群的位掩碼枚舉。用于AprilTags。 `image.``ARTOOLKIT` ARTOOLKIT標簽群的位掩碼枚舉。用于AprilTags。 `image.``EAN2` EAN2條形碼類型枚舉。 `image.``EAN5` EAN5條形碼類型枚舉。 `image.``EAN8` EAN8條形碼類型枚舉。 `image.``UPCE` UPCE條形碼類型枚舉。 `image.``ISBN10` ISBN10條形碼類型枚舉。 `image.``UPCA` UPCA條形碼類型枚舉。 `image.``EAN13` EAN13條形碼類型枚舉。 `image.``ISBN13` ISBN13條形碼類型枚舉。 `image.``I25` I25條形碼類型枚舉。 `image.``DATABAR` DATABAR條形碼類型枚舉。 `image.``DATABAR_EXP` DATABAR\_EXP條形碼類型枚舉。 `image.``CODABAR` CODABAR條形碼類型枚舉。 `image.``CODE39` CODE39條形碼類型枚舉。 `image.``PDF417` PDF417條形碼類型枚舉(目前尚不能運行)。 `image.``CODE93` CODE93條形碼類型枚舉。 `image.``CODE128` CODE128條形碼類型枚舉。
                  <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>

                              哎呀哎呀视频在线观看