c语言中系统函数设定像素,在imag中对每个像素应用自定义函数的快速方法
我正在尋找一種更快的方法來應用一個自定義函數到一個圖像,我用來刪除藍色背景。我有一個函數可以計算出每個像素與背景中藍色的距離。帶有循環的原始代碼如下所示:def dist_to_blue(pix):
rdist = 76 - pix[0]
gdist = 150 - pix[1]
bdist = 240 - pix[2]
return rdist*rdist + gdist*gdist + bdist*bdist
imgage.shape #outputs (576, 720, 3)
for i, row in enumerate(image):
for j, pix in enumerate(row):
if dist_to_blue(pix) < 12000: image[i,j] = [255,255,255]
然而,對于這個相對較小的圖像,此代碼需要大約8秒的時間來運行。我一直在嘗試使用numpy的“vectorize”函數,但這會將該函數單獨應用于每個值。但是我想做的每一個像素aka不擴展z/rgb維度
我提出的唯一改進是將for循環替換為以下內容:
m = np.apply_along_axis(lambda pix: (255,255,255) if dist_to_blue(pix) < 12000 else pix, 2, image)
只需7秒,速度仍然非常緩慢。有沒有我遺漏的東西可以加快執行時間
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的c语言中系统函数设定像素,在imag中对每个像素应用自定义函数的快速方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 团建朋友圈文案怎么写一句话145个
- 下一篇: 升级鸿蒙系统如何退出,华为鸿蒙2.0系统