feature_orb.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. # # 创建ORB对象
  9. # orb = cv2.ORB_create()
  10. #
  11. # # 检测ORB特征点
  12. # keypoints, descriptors = orb.detectAndCompute(image, None)
  13. #
  14. # # 绘制特征点
  15. # image_with_keypoints = cv2.drawKeypoints(image, keypoints, None)
  16. #
  17. # # 保存带有特征点的图像
  18. # plt.imshow(image_with_keypoints)
  19. # plt.title('ORB Image')
  20. # plt.show()
  21. def process_image(image_path):
  22. image = io.imread(image_path)
  23. # 创建ORB对象
  24. orb = cv2.ORB_create()
  25. # 检测ORB特征点
  26. keypoints, descriptors = orb.detectAndCompute(image, None)
  27. # 绘制特征点
  28. image_with_keypoints = cv2.drawKeypoints(image, keypoints, None)
  29. # 保存带有特征点的图像
  30. plt.imshow(image_with_keypoints)
  31. plt.title('ORB Image')
  32. folder_name = os.path.basename(os.path.dirname(image_path))
  33. # 创建保存图像的文件夹
  34. save_folder = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'orb', folder_name)
  35. os.makedirs(save_folder, exist_ok=True)
  36. # 保存图像
  37. save_path = os.path.join(save_folder, 'orb_' + os.path.basename(image_path))
  38. plt.imsave(save_path, image_with_keypoints, cmap='gray')
  39. print(save_path)
  40. # plt.show()
  41. if __name__ == "__main__":
  42. if len(sys.argv) != 2:
  43. sys.exit(1)
  44. image_path = sys.argv[1]
  45. process_image(image_path)