feature_shift.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import cv2
  2. from skimage import io
  3. import matplotlib.pyplot as plt
  4. import sys
  5. import os
  6. # image = io.imread('D:\\hiddz\\SAR\\test_data\\TEST\\A11\\HB14931.JPG')
  7. #
  8. # # 创建SIFT特征检测器
  9. # sift = cv2.SIFT_create()
  10. #
  11. # # 检测关键点和提取描述符
  12. # keypoints, descriptors = sift.detectAndCompute(image, None)
  13. #
  14. # # 显示关键点
  15. # output_image = cv2.drawKeypoints(image, keypoints, None, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
  16. # # 显示可视化结果
  17. # # 保存带有特征点的图像
  18. #
  19. # plt.imshow(output_image)
  20. # plt.title('SHIFT Image')
  21. # plt.show()
  22. def process_image(image_path):
  23. image = io.imread(image_path)
  24. # 创建SIFT特征检测器
  25. sift = cv2.SIFT_create()
  26. # 检测关键点和提取描述符
  27. keypoints, descriptors = sift.detectAndCompute(image, None)
  28. # 显示关键点
  29. output_image = cv2.drawKeypoints(image, keypoints, None, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
  30. # 显示可视化结果
  31. # 保存带有特征点的图像
  32. plt.imshow(output_image)
  33. plt.title('SHIFT Image')
  34. folder_name = os.path.basename(os.path.dirname(image_path))
  35. # 创建保存图像的文件夹
  36. save_folder = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'shift', folder_name)
  37. os.makedirs(save_folder, exist_ok=True)
  38. # 保存图像
  39. save_path = os.path.join(save_folder, 'shift_' + os.path.basename(image_path))
  40. plt.imsave(save_path, output_image, cmap='gray')
  41. print(save_path)
  42. # plt.show()
  43. if __name__ == "__main__":
  44. if len(sys.argv) != 2:
  45. sys.exit(1)
  46. image_path = sys.argv[1]
  47. process_image(image_path)