Files
Stomach_Cancer_Pytorch/test_bounding_box.py

66 lines
2.3 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import cv2
import numpy as np
from Image_Process.Image_Mask_Ground_Truth_Processing import XMLAnnotationProcessor
def test_bounding_box_processing_with_mock_data():
# 初始化XML處理器
processor = XMLAnnotationProcessor()
# 創建一個測試圖像 (300x300 彩色圖像)
test_image = np.ones((300, 300, 3), dtype=np.uint8) * 128 # 灰色背景
# 在圖像中央創建一個彩色區域
test_image[100:200, 100:200, 0] = 255 # 紅色通道
test_image[120:180, 120:180, 1] = 255 # 綠色通道
test_image[140:160, 140:160, 2] = 255 # 藍色通道
# 創建模擬的bounding box數據
mock_bounding_boxes = [
{
'name': 'test_object',
'xmin': 50,
'ymin': 50,
'xmax': 150,
'ymax': 150
},
{
'name': 'test_object2',
'xmin': 200,
'ymin': 200,
'xmax': 250,
'ymax': 250
}
]
# 調用draw_bounding_boxes方法
result_image = processor.draw_bounding_boxes(test_image, mock_bounding_boxes)
# 顯示處理結果
print(f"原始圖像形狀: {test_image.shape}")
print(f"結果圖像形狀: {result_image.shape}")
# 檢查圖像是否有非黑色區域bounding box內的原圖
non_black_pixels = np.sum(result_image > 0)
print(f"非黑色像素數量: {non_black_pixels}")
# 檢查第一個bounding box區域是否保留了原圖
box1 = result_image[50:150, 50:150]
box1_matches = np.array_equal(box1, test_image[50:150, 50:150])
print(f"第一個bounding box區域是否與原圖相同: {box1_matches}")
# 檢查框外區域是否為黑色
outside_box = result_image[0:40, 0:40] # 選擇一個框外區域
is_black = np.sum(outside_box) == 0
print(f"框外區域是否為黑色: {is_black}")
if non_black_pixels > 0 and box1_matches and is_black:
print("測試成功: bounding box內保持原圖框外變為黑色")
else:
print("測試失敗")
# 保存結果圖像以便查看
cv2.imwrite("test_bounding_box_result.png", result_image)
print("已保存結果圖像: test_bounding_box_result.png")
if __name__ == "__main__":
test_bounding_box_processing_with_mock_data()