先來看一下 math 模塊中包含內(nèi)容,如下所示:

金門網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,金門網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為金門1000多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的金門做網(wǎng)站的公司定做!
接下來具體看一下該模塊的常用函數(shù)和常量。
ceil(x)
返回 x 的上限,即大于或者等于 x 的最小整數(shù)。看下示例:
floor(x)
返回 x 的向下取整,小于或等于 x 的最大整數(shù)。看下示例:
fabs(x)
返回 x 的絕對值。看下示例:
fmod(x, y)
返回 x/y 的余數(shù),值為浮點數(shù)。看下示例:
factorial(x)
返回 x 的階乘,如果 x 不是整數(shù)或為負數(shù)時則將引發(fā) ValueError。看下示例:
pow(x, y)
返回 x 的 y 次冪。看下示例:
fsum(iterable)
返回迭代器中所有元素的和。看下示例:
gcd(x, y)
返回整數(shù) x 和 y 的最大公約數(shù)。看下示例:
sqrt(x)
返回 x 的平方根。看下示例:
trunc(x)
返回 x 的整數(shù)部分。看下示例:
exp(x)
返回 e 的 x 次冪。看下示例:
log(x[, base])
返回 x 的對數(shù),底數(shù)默認為 e。看下示例:
常量
tan(x)
返回 x 弧度的正切值。看下示例:
atan(x)
返回 x 的反正切值。看下示例:
sin(x)
返回 x 弧度的正弦值。看下示例:
asin(x)
返回 x 的反正弦值。看下示例:
cos(x)
返回 x 弧度的余弦值。看下示例:
acos(x)
返回 x 的反余弦值。看下示例:
decimal 模塊為正確舍入十進制浮點運算提供了支持,相比內(nèi)置的浮點類型 float,它能更加精確的控制精度,能夠為精度要求較高的金融等領(lǐng)域提供支持。
decimal 在一個獨立的 context 下工作,可以使用 getcontext() 查看當前上下文,如下所示:
從上面的結(jié)果中我們可以看到 prec=28,這就是默認的精度,我們可以使用 getcontext().prec = xxx 來重新設(shè)置精度。接下來通過具體示例看一下。
基本運算
執(zhí)行結(jié)果:
上面結(jié)果是用了默認精度,我們重新設(shè)置下精度再來看一下:
執(zhí)行結(jié)果:
random 模塊可以生成隨機數(shù),我們來看一下其常用函數(shù)。
random()
返回 [0.0, 1.0) 范圍內(nèi)的一個隨機浮點數(shù)。看下示例:
uniform(a, b)
返回 [a, b) 范圍內(nèi)的一個隨機浮點數(shù)。看下示例:
randint(a, b)
返回 [a, b] 范圍內(nèi)的一個隨機整數(shù)。看下示例:
randrange(start, stop[, step])
返回 [start, stop) 范圍內(nèi)步長為 step 的一個隨機整數(shù)。看下示例:
choice(seq)
從非空序列 seq 返回一個隨機元素。 看下示例:
shuffle(x[, random])
將序列 x 隨機打亂位置。看下示例:
sample(population, k)
返回從總體序列或集合中選擇的唯一元素的 k 長度列表,用于無重復(fù)的隨機抽樣。看下示例:
參考:
OpenCV曲線擬合與圓擬合
使用OpenCV做圖像處理與分析的時候,經(jīng)常會遇到需要進行曲線擬合與圓擬合的場景,很多OpenCV開發(fā)者對此卻是一籌莫展,其實OpenCV中是有現(xiàn)成的函數(shù)來實現(xiàn)圓擬合與直線擬合的,而且還會告訴你擬合的圓的半徑是多少,簡直是超級方便,另外一個常用到的場景就是曲線擬合,常見的是基于多項式擬合,可以根據(jù)設(shè)定的多項式冪次生成多項式方程,然后根據(jù)方程進行一系列的點生成,形成完整的曲線,這個車道線檢測,輪廓曲線擬合等場景下特別有用。下面就通過兩個簡單的例子來分別學(xué)習(xí)一下曲線擬合與圓擬合的應(yīng)用。
一:曲線擬合與應(yīng)用
基于Numpy包的polyfit函數(shù)實現(xiàn),其支持的三個參數(shù)分別是x點集合、y點集合,以及多項式的冪次。得到多項式方程以后,就可以完整擬合曲線,圖中有如下四個點:
?
調(diào)用polyfit生成的二階多項式如下:
?
擬合結(jié)果如下:
?
使用三階多項式擬合,調(diào)用polyfit生成的多項式方程如下:
?
生成的擬合曲線如下:
?
使用polyfit進行曲線擬合時候需要注意的是,多項式的冪次最大是數(shù)據(jù)點數(shù)目N - 1冪次多項式,比如有4個點,最多生成3階多項式擬合。上述演示的完整代碼實現(xiàn)如下:
def circle_fitness_demo():
image = np.zeros((400, 400, 3), dtype=np.uint8)
x = np.array([30, 50, 100, 120])
y = np.array([100, 150, 240, 200])
for i in range(len(x)):
cv.circle(image, (x[i], y[i]), 3, (255, 0, 0), -1, 8, 0)
cv.imwrite("D:/curve.png", image)
poly = np.poly1d(np.polyfit(x, y, 3))
print(poly)
for t in range(30, 250, 1):
y_ = np.int(poly(t))
cv.circle(image, (t, y_), 1, (0, 0, 255), 1, 8, 0)
cv.imshow("fit curve", image)
cv.imwrite("D:/fitcurve.png", image)
二:圓擬合與應(yīng)用
圓的擬合是基于輪廓發(fā)現(xiàn)的結(jié)果,對發(fā)現(xiàn)的近似圓的輪廓,通過圓擬合可以得到比較好的顯示效果,輪廓發(fā)現(xiàn)與擬合的API分別為findContours與fitEllipse,
有圖像如下:
?
使用輪廓發(fā)現(xiàn)與圓擬合處理結(jié)果如下:
?
紅色表示擬合的圓,藍色是圓的中心位置
上述完整的演示代碼如下:
def circle_fitness_demo():
src = cv.imread("D:/javaopencv/c2.png")
cv.imshow("input", src)
src = cv.GaussianBlur(src, (3, 3), 0)
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
cv.imshow("binary", binary)
image, contours, hierachy = cv.findContours(binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
for i in range(len(contours)):
rrt = cv.fitEllipse(contours[i])
cv.ellipse(src, rrt, (0, 0, 255), 2, cv.LINE_AA)
x, y = rrt[0]
cv.circle(src, (np.int(x), np.int(y)), 4, (255, 0, 0), -1, 8, 0)
cv.imshow("fit circle", src)
cv.imwrite("D:/fitcircle.png", src)
吾心信其可行,則移山填海之難,終有成功之日;
吾心信其不可行,則反掌折枝之易,亦無收效之期也
方法如下:
①使用numpy等第三方庫,可以提高到64bit的精度。
②使用高精度運算庫。
③使用mathematica,高精度計算就趕緊用專業(yè)的數(shù)學(xué)軟件。
round函數(shù)python:
這個函數(shù)相當于調(diào)去里面的一個函數(shù),有一個數(shù)組,從中里面調(diào)取一個數(shù)據(jù)。簡單的說,round是使用四舍五入對小數(shù)進行位數(shù)控制的函數(shù),round(a,b),a參數(shù)是小數(shù),b是小數(shù)點后保留的位數(shù)。實際使用需要考慮的python2和python3版本的差異與小數(shù)精度的問題。
ound函數(shù)的使用用法
根據(jù)Excel的幫助得知,round函數(shù)就是返回一個數(shù)值,該數(shù)值是按照指定的小數(shù)位數(shù)進行四舍五入運算的結(jié)果。
round函數(shù)的語法是:ROUND(number,num_digits),即:Round(數(shù)值,保留的小數(shù)位數(shù))
Number:需要進行四舍五入的數(shù)字。
Num_digits:指定的位數(shù),按此位數(shù)進行四舍五入。
其中,如果num_digits大于0,則四舍五入到指定的小數(shù)位。
如果num_digits等于0,則四舍五入到最接近的整數(shù)。
如果num_digits小于0,則在小數(shù)點左側(cè)進行四舍五入。
網(wǎng)頁題目:python函數(shù)設(shè)置精度 python 設(shè)置精度
鏈接URL:http://www.chinadenli.net/article44/dooepee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、企業(yè)建站、域名注冊、網(wǎng)站設(shè)計公司、網(wǎng)站制作、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)