gpt4 book ai didi

python - 如何将二值图像表示为图形,轴为高度和宽度尺寸,数据为像素

转载 作者:行者123 更新时间:2023-12-02 17:32:18 25 4
gpt4 key购买 nike

我正在尝试将 Python 与 opencv、numpy 和 matplotlib 一起使用,为将使用栏杆导航的机器人做一些计算机视觉。我目前非常卡住,没有地方可以看。我目前的代码是:

import cv2
import numpy as np
import matplotlib.pyplot as plt

image = cv2.imread('railings.jpg')
railing_image = np.copy(image)

resized_image = cv2.resize(railing_image,(881,565))

gray = cv2.cvtColor(resized_image, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (5, 5), 0)
canny = cv2.Canny(blur, 85, 255)

cv2.imshow('test',canny)

image_array = np.array(canny)
ncols, nrows = image_array.shape

count = 0
scan = np.array
for x in range(0,image_array.shape[1]):
for y in range(0,image_array.shape[0]):
if image_array[y, x] == 0:
count += 1
scan = [scan, count]

print(scan)

plt.plot([0, count])
plt.axis([0, nrows, 0, ncols])
plt.show()

cv2.waitKey(0)

我正在使用存储在 1 和 0 数组中的精明图像,我需要表示的图像是

Source image

最终结果应类似于下图。

terrible_drawing_of_image

我试过使用直方图函数,但我只设法让它基本上输出 1 或 0 出现次数的计数。

如果有人可以帮助我或将我指向正确的方向,那将生成一个表示高度和宽度尺寸图中的图像像素的图表。

谢谢

最佳答案

我不确定这有多普遍,但您可以使用 numpy argmax在您的情况下获取最大值的位置(如 this )。你应该避免循环,因为这会很慢,最好使用 numpy 函数。我已经导入了您的图像并使用了黄色 channel 中 200 或更多是栏杆的截止标准,

import cv2
import numpy as np
import matplotlib.pyplot as plt

#This loads the canny image you uploaded
image = cv2.imread('uojHJ.jpg')

#Trim off the top taskbar
trimimage = image[100:, :,0]

#Use argmax with 200 cutoff colour in one channel
maxindex = np.argmax(trimimage[:,:]>200, axis=0)

#Plot graph
plt.plot(trimimage.shape[0] - maxindex)
plt.show()

如下所示:

enter image description here

关于python - 如何将二值图像表示为图形,轴为高度和宽度尺寸,数据为像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54832694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com