[英]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.