Opencv判断是否加载图片的两种方法

本文介绍两种有效的方法来处理图片加载失败的问题,通过简单的条件判断,可以在程序中清晰地捕获并提示错误信息,帮助开发者快速定位问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 加载图片是图像处理最基本的操作,但有的时候我们加载图片会因为图片路径不正确

或者没有图片等原因而报错,经常写代码的凭经验就知道是哪错了,但初学者一般是看不懂这

些错误,就会很恼火了,如果加个判断语句就会不一样了啥,如果是图片路径的原因而导致

加载不到图片,它会在终端显示你要输出的错误信息,这样一看就很清楚了。

【方法一】

[html]  view plain  copy
  1. src = imread( "1.jpg" ,CV_LOAD_IMAGE_COLOR );    //注意路径得换成自己的  
  2.     //判断是否加载图片  
  3.     if(!src.data)  //判断是否有数据
  4.     {  
  5.         cout<<"Picture loading failed !"<<endl;  
  6.         return -1;  
  7.     }  

注意:判断里面是!src.data,有感叹号,没括号的,它不是函数。


【方法二】

[html]  view plain  copy
  1. src = imread( "1.jpg" ,CV_LOAD_IMAGE_COLOR );    //注意路径得换成自己的  
  2.  if(src.empty())  //判断是否加载成功
  3.     {  
  4.         cout<<"Picture loading failed !"<<endl;  
  5.         return -1;          
  6.     }  
注意:判断里面是src.empty(),这里就调用了一个函数,输代码的时候要仔细。

最后放张图:


版权声明:本文为博主原创文章,未经博主允许不得转载,博客地址:http://blog.youkuaiyun.com/mars_xiaolei。 https://blog.youkuaiyun.com/mars_xiaolei/article/details/62220756
### 使用Python和OpenCV实现图像相似性检测 #### 导入必要的库 为了使用Python和OpenCV进行图像相似性检测,首先需要导入所需的库。这通常包括`cv2`用于图像处理操作以及`numpy`来辅助数值运算。 ```python import cv2 import numpy as np from skimage.metrics import structural_similarity as ssim ``` #### 加载待比较的两幅图像 接下来要加载想要比较的两个文件中的图像,并将其转换成灰度模式以便后续处理。 ```python imageA = cv2.imread('path_to_first_image') imageB = cv2.imread('path_to_second_image') # 将彩色图像转为灰度图 grayA = cv2.cvtColor(imageA, cv2.COLOR_BGR2GRAY) grayB = cv2.cvtColor(imageB, cv2.COLOR_BGR2GRAY) ``` #### 计算结构相似性指数 (SSIM) 结构相似性指数测量了两幅测试样本之间的相似程度,在这里用来评估两张图片间的匹配度。它不仅考虑亮度、对比度还加入了结构性信息的影响因素。 ```python (score, diff) = ssim(grayA, grayB, full=True) print(f'SSIM Score: {score}') diff = (diff * 255).astype("uint8") ``` 此分数越接近于1表示两者越相像;而当值趋近于0时,则意味着存在较大差别[^3]。 #### 基于ORB特征点描述符法 另一种常用方法是利用局部不变量特性来进行匹配分析。下面展示的是采用ORB算法提取关键点并建立描述子向量的过程: ```python orb = cv2.ORB_create() kpA, desA = orb.detectAndCompute(grayA, None) kpB, desB = orb.detectAndCompute(grayB, None) bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True) matches = bf.match(desA, desB) good_matches = sorted(matches, key=lambda x:x.distance)[:10] img_matches = cv2.drawMatches( img1=grayA, keypoints1=kpA, img2=grayB, keypoints2=kpB, matches1to2=good_matches, outImg=None, flags=cv2.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS ) cv2.imshow('Matches', img_matches) cv2.waitKey(0); cv2.destroyAllWindows(); ``` 上述代码片段展示了如何通过ORB找到最佳匹配的关键点对,并绘制出来供观察者直观理解两者的关联情况[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值