行走的蓑衣客

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 

1.RuntimeWarning: overflow encountered in ubyte_scalars像素加减运算溢出异常

  用python处理图像时,可能会涉及两幅图像像素值之间的加减运算,这里需要注意的是图像像素值是ubyte类型,ubyte类型数据范围为0~255,若做运算出现负值或超出255,则会抛出异常,下面看一下异常示例:

复制代码
from PIL import Image
import numpy as np
image1 = np.array(Image.open("1.jpg"))                   
image2 = np.array(Image.open("2.jpg"))                  
# 异常语句
temp = image1[1, 1] - image2[1, 1]                   # 此处如果为负值则溢出

# 正确写法
temp = int(image1[1, 1]) - int(image2[1, 1])         # 强制为整型再计算就不会溢出了
复制代码

2 ValueError: not enough values to unpack (expected 3, got 2)

原因是 cv2.findContours的opencv旧版本返回3个值:
im2, contours, hierarchy = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE),

新版本返回2个值:
contours, hierarchy = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)。

解决办法:
原代码:im2, contours, hierarchy = cv2.findContours(img_gray, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
改为: contours, hierarchy = cv2.findContours(img_gray, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

 

3.【SIFT】python OSError: image1.sift not found 解决方案

原因:

  报错提示的代码行为l1, d1 = sift.read_features_from_file(‘im1.sift’),说明没有读取到im1.sift,说明在sift.process_image阶段没有生成sift文件

 解决办法

  添加开源工具包VLFeat,下载链接:http://www.vlfeat.org/download/,最好下载vlfeat-0.9.20-bin.tar.gz。

 

   把Win64文件夹直接复制到自己的Python工程项目中。我在项目中新建了一个名为VLFeat的文件夹,将复制的win64文件家直接粘贴在这个新建的文件中。修改sift下的process_image代码下的cmmd 。

  改为cmmd = str(r"C:\Users\PC028\PycharmProjects\test_3D\sift.exe “+imagename+” --output="+resultname+
" "+params)(路径是你项目文件夹中的sift.exe的路径,记得在路径前加r,并且路径最后要加一个空格)。

 

posted on   行走的蓑衣客  阅读(619)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
 
点击右上角即可分享
微信分享提示