from PIL import Image
import numpy as np
from scipy.ndimage.filters import maximum_filter
import pylab
# the picture (256 * 256 pixels) contains bright spots of which I wanna get positions
# problem: data has high background around value 900 - 1000
im = Image.open('slice0000.png')
data = np.array(im)
# as far as I understand, data == maximum_filter gives True-value for pixels
# being the brightest in their neighborhood (here 10 * 10 pixels)
maxima = (data == maximum_filter(data,10))
# How can …Run Code Online (Sandbox Code Playgroud) 我想使用Python执行一些基本的机器视觉任务,我想知道在哪里可以找到帮助我入门的教程.
据我所知,唯一一个用于机器视觉的Python免费库是PyCV(显然是OpenCV的包装器),但我找不到任何合适的教程.
我的主要任务是从FireWire获取图像.在不同区域中分割图像.然后对每个区域进行统计,以确定像素区域和质心.
以前,我使用过Matlab的Image Processing Tootlbox没有任何问题.我希望在Python中找到等价的函数是graythresh,regionprops和gray2ind.
谢谢!
我正在尝试制作一个打开图像的程序,扫描它的圆形/圆形并返回坐标,以便我可以使用该cv.Circle功能在检测到的圆上绘制圆圈.
我的问题是:如何使用cv.HoughCircles()?获取图像中检测到的圆的坐标/半径?
使用这个页面,我发现了如何检测圆圈(这花了我很多时间才发现,因为我不理解像阈值这样的术语,而Python的OpenCV文档真的很差,几乎没有).不幸的是,在该页面上没有显示如何提取从CvMat创建的每个圆圈中获取的信息.如何提取该信息/是否有其他方式(例如MemoryStorage())?
到目前为止这是我的代码:
import cv, opencv
def main():
im = cv.LoadImageM("Proba.jpg")
gray = cv.CreateImage(cv.GetSize(im), 8, 1)
edges = cv.CreateImage(cv.GetSize(im), 8, 1)
cv.CvtColor(im, gray, cv.CV_BGR2GRAY)
cv.Canny(gray, edges, 50, 200, 3)
cv.Smooth(gray, gray, cv.CV_GAUSSIAN, 9, 9)
storage = cv.CreateMat(im.rows, 1, cv.CV_32FC3)
cv.HoughCircles(edges, storage, cv.CV_HOUGH_GRADIENT, 2, gray.height/4, 200, 100)
# Now, supposing it found circles, how do I extract the information?
print storage.r
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
另外,HoughCircles为了让我能够检测出真正的小圆圈(如屏幕上的3mm),最后两个参数需要具有什么值?
谢谢大家的时间和精力来帮助我! …
我用Python编写了一个程序,它自动读取这样的评分表

目前我正在使用以下基本策略:
运行程序的结果如下图所示:

您可以在左上方显示的图像下方和右侧看到峰值图.左上图中的线是列的位置,红点表示识别的分数.直方图右下方显示每个圆的填充水平和分类线.
此方法的问题在于需要仔细调整,并且对扫描设置的差异很敏感.是否有一种更健壮的方式来识别网格,这将需要较少的先验信息(目前我正在使用有关多少点的知识),并且对于在纸张上绘制其他形状的人更加健壮?我相信可能有可能使用2D傅立叶变换,但我不确定如何.
我正在使用EPD,因此我可以使用相当多的库.
我有一个灰度png图像,我想从我的图像中提取所有连接的组件.一些组件具有相同的强度,但我想为每个对象分配一个唯一的标签.这是我的形象

我试过这段代码:
img = imread(images + 'soccer_cif' + str(i).zfill(6) + '_GT_index.png')
labeled, nr_objects = label(img)
print "Number of objects is %d " % nr_objects
Run Code Online (Sandbox Code Playgroud)
但是我只使用了三个对象.请告诉我如何获取每个对象.
我对OpenCV比较陌生,而且我没有强大的图像处理背景.目前我正在开展一个项目来编写一个程序来计算图像中显微镜下的所有生物细胞.我尝试过各种来自互联网资源的方法来对图像应用计数,但它们都没有像预期的那样运行良好.
我使用的一些方法是:
这是我需要计算单元格总数的图像示例.
如果单元格不靠近,我当前的计数算法效果会更好.例如这样:
然而,该算法仍然无法将在图像中心粘在一起的3个单元分开.
那么我该怎样做才能检测到图像中的细胞总数最少为假阴性/阳性?
这是一张我要从中计算每种颜色的对象数的图表。什么是不使用opencv的简单方法?
[编辑2]: 我尝试过的方法如下:(1)有色物体计数
from PIL import Image
im = Image.open('./colored-polka-dots.png').getcolors()
im.sort(key=lambda k: (k[0]), reverse=True)
print('Top 5 colors: {}'.format((im[:5])))
# View non-background colors
color_values = []
for color in im[1:5]:
color_values.append(color[1])
arr = np.asarray(color[1]).reshape(1,1,4).astype(np.uint8)
plt.imshow(arr)
plt.show() # get top 4 frequent colors as green,blue,pink,ornage
# Create a dict of color names and their corressponding rgba values
color_dict = {}
for color_name,color_val in zip(['green','blue','pink','orange'],color_values):
color_dict[color_name] = color_val
# Make use of ndimage.measurement.labels from scipy
# to get the number …Run Code Online (Sandbox Code Playgroud)