簡體   English   中英

在 Python 中為 Labview 返回圖像的問題

[英]Problem in returning images in Python for Labview

我剛開始學習 LabView。 我想從 python 函數中的圖像中獲取閾值並在 LabView 中顯示圖像。 但是當函數返回圖像時,它會在 LabView 中報錯。 我將 Python 和 LabView 程序中的相關代碼作為附件發送。 謝謝

import numpy as np
import cv2

def thershold(data):

    gray = np.array(data,dtype=np.uint8)
    ret, thresh1 = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)
    return np.array( thresh1, dtype=np.float64)

if __name__ == '__main__':
    data = cv2.imread('C:/Users/user00/Desktop/LabView/1120220711_151148.tiff', 1)
    thresh  = thershold(data)
    cv2.imshow('thresh1',thresh)
    cv2.waitKey(0)

在此處輸入圖像描述

在此處輸入圖像描述

正如您帖子中的評論者所建議的那樣,python 代碼和 LabVIEW 代碼似乎需要不同的類型。 當您僅在 Python 中執行測試時,代碼會根據需要進行調整以顯示圖像,但在兩個環境之間傳遞時類型需要匹配。

下面的示例代碼假定您的 Python 代碼需要uint8類型的單通道圖像。 在 LabVIEW 端,我讀入一個彩色圖像(帶或不帶 Alpha 的 RGB)並使用Extract Single Color Pane.vi將其轉換為灰度圖像。 然后我使用IMAQ ImagetoArray.vi將 U8 圖像轉換為二維數組 U8 數組。 注意 - 有一個名稱非常相似的VI用於彩色 (RGB) 圖像,因此您必須確保使用正確的VI

Python 代碼執行“閾值”操作(我認為您的函數名稱有錯字)並簡單地返回thresh1 ,這是另一個uint8類型的二維數組。

可以使用IMAQ ImageToArray.vi將 Python 節點的輸出數據寫回到新的 IMAQ 圖像中。 此處也有類似的說明 - 確保您使用的是為單通道圖像設計的VI

import numpy as np
import cv2

def threshold(data):

    gray = np.array(data,dtype=np.uint8)
    ret, thresh1 = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)
    return thresh1

單通道閾值示例

如果您需要閾值多通道圖像,那么您將需要稍微不同的代碼,除非需要,否則可能超出此問題的范圍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM