如何解决我怎样才能避免溢出?
我需要将图像转换为 HSV。我使用了 OpenCV 库,但是当我运行我的算法时,出现以下警告:
RuntimeWarning: overflow encountered in ubyte_scalars
def distance(pixel1,pixel2):
h1,s1,v1 = pixel1[0],pixel1[1],pixel1[2]
h2,s2,v2 = pixel2[0],pixel2[1],pixel2][2]
dh = abs(h1 - h2) / 179
ds = abs(s1 - s2) / 255
dv = abs(v1 - v2) / 255
distance = math.sqrt(dh ** 2 + ds ** 2 + dv ** 2) / math.sqrt(3)
return distance
当我执行以下代码时,由于溢出,结果不正确。在某些情况下,距离大于 1.0,这不应该发生。
import cv2
import math
import numpy as np
#threshold value in range (0,1]
threshold = 0.7689
image1 = cv2.imread("image1.jpg")
image2 = cv2.fastNlMeansDenoisingColored(image1,None,10,7,21)
image3 = cv2.cvtColor(image2,cv2.COLOR_BGR2HSV)
w,h,c = image3.shape
binary_image = np.zeros((w,h),dtype= int)
# extract one pixel from image
pixel1 = image3[w//2][h//2]
for i in range(w):
for j in range(h):
distance = distance(pixel1,image3[i][j])
if distance > threshold:
binary_image[i][j] = 1
else:
binary_image[i][j] = 0
我在阅读图片后尝试进行以下更改
image4 = np.array(image3,dtype = 'float64')
如果我更改数组的类型,距离会变得非常小(
如何更改代码以避免溢出?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。