将Python-PIL代码转换为Python-OpenCV

2024-05-14 21:53:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python做一些业余的图像分析,特别是Numpy、PIL和OpenCV。但是,我对PIL的性能不太满意,所以我希望将这些代码部分移植到OpenCV中。如果需要的话,这也会使以后更容易将代码移植到C/C++。在

不管怎样,我在移植我的部分代码时遇到了一些麻烦,希望能在这里得到一些帮助。具体来说,我需要更改的部分是:

功能:找到图像中像素最多的红、绿、蓝(R、G、B)强度。目前通过柱状图完成。输入图像是Python PIL图像的形式。

def bgcalcRGB(img):

    hist = img.histogram()

    R=0;G=0;B=0; avgR=0.; avgG=0.; avgB=0.; Rmax=175+15; Rmin=175-15;
    Gmax=160+15; Gmin=160-15; Bmax=150+15; Bmin=150-15;

    for x in range(Rmin,Rmax,1):
        if hist[x] > avgR: avgR = hist[x]; R = x
    for x in range(256+Gmin,Gmax+256,1):
        if hist[x] > avgG: avgG = hist[x]; G = x - 256
    for x in range(256*2+Bmin,Bmax+256*2,1):
        if hist[x] > avgB: avgB = hist[x]; B = x - 256*2
    return (R,G,B)

功能:作为RGB通道的同时阈值。如果某个RGB像素在某个范围内(与R、G和B无关),则该像素为白色。如果没有,则丢弃并涂成黑色。输入图像是Python PIL图像。

^{pr2}$

所以我需要的是帮助将上面的代码翻译成只使用OpenCV,或者至少不使用Python-PIL。在

谢谢!在


Tags: 代码in图像功能imgforifpil
1条回答
网友
1楼 · 发布于 2024-05-14 21:53:30

你应该试试SimpleCV

它基于Python OpenCV绑定,scipy,numpy,pygame,PIL。SimpleCV非常容易学习和实现。在

img = Image("filename.jpg")将以BGR形式加载图像。在

要访问图像的x,y像素,color = img[x, y]

得到cv2。个人简历=>;img.getBitmap()

SimpleCV集成了scipy和numpy以实现快速计算和机器学习模型。它包括pygame显示。在

要显示图像,img.show()

它还包括各种tracknig特性(Lucas Kanade Tracker、CAMShift等)、关键点匹配特性(SURF、SIFT、ASIFT、STAR、ORB、MSER等)和许多其他blob特性。在

使用SimpleCV可以轻松地完成基本的图像处理和图像数据提取。在

相关问题 更多 >

    热门问题