小编dan*_*chy的帖子

如何删除Python中图像上绘制的线条?

我在现有图像的顶部使用鼠标单击(每次鼠标单击都是一个连接的点)在 python(带有 opencv 包)中绘制了几条线,您可以将其视为允许用户在图像上选择某些内容。

我如何允许用户通过单击鼠标右键来删除图像上的最后一个点?这是我当前的代码:

import numpy
import cv2

points = []

def draw_point(event, x, y, flags, param):
    if event == cv2.EVENT_LBUTTONDOWN:
        cv2.circle(image, (x,y), 1, (255,0,0),-1)
        points.append((x,y))
        pts = numpy.array(points, numpy.int32)
        cv2.polylines(image,[pts],False,(255,0,0))
    elif event == cv2.EVENT_RBUTTONDOWN:
        # HOW TO DELETE?
        del points[-1]
        pts = numpy.array(points, numpy.int32)
        cv2.polylines(image,[pts],True,(255,0,0))



image = cv2.imread('simple_tattoo.jpg', cv2.IMREAD_UNCHANGED)

cv2.namedWindow('example', cv2.WINDOW_AUTOSIZE)
cv2.setMouseCallback('example', draw_point)


while(1):
   cv2.imshow('example',image)

   if cv2.waitKey(20) & 0xFF == 27:
        break

cv2.destroyAllWindows()

print (points)
Run Code Online (Sandbox Code Playgroud)

是否有更简单的方法在图像上绘制线条(任何东西)?

python opencv

5
推荐指数
1
解决办法
2万
查看次数

如何使用 x 和 y 坐标对点进行透视变换

所以我写了这个小程序,它允许我在两个图像上选择 4 个点。

使用这些点我得到一个变换矩阵。之后,我在其中一张图像上选择一个点,并希望可视化该点在其他图像上的位置。

假设我的观点是这样标记的 -> (x,y)- 所以它是一个元组。我应该如何在图像上格式化这个“位置”,以便可以对其进行转换。

我查看了perspectiveTransform() 方法的文档,并认为我应该将其存储为以下形状:

numpy.array([
        [self.points[self.length-1][0]],
        [self.points[self.length-1][1]]
        ], dtype="float32")
Run Code Online (Sandbox Code Playgroud)

只需单击一下,我就会得到这种格式:

Point= [[ 2300.]
        [  634.]]
Run Code Online (Sandbox Code Playgroud)

这种格式似乎不起作用,我使用这个转换矩阵:

M = [[ -1.71913123e+00  -4.76850572e+00   5.27968944e+03]
     [  2.07693562e-01  -1.09738424e+01   6.35222770e+03]
     [  1.02865125e-04  -4.80067600e-03   1.00000000e+00]]
Run Code Online (Sandbox Code Playgroud)

在这种方法中(并得到以下错误):

cv2.perspectiveTransform(src, M)
OpenCV Error: Assertion failed (scn + 1 == m.cols) in cv::perspectiveTransform, file C:\builds\master_PackSlaveAddon-win64-vc12-static\opencv\modules\core\src\matmul.cpp
Run Code Online (Sandbox Code Playgroud)

欢迎任何建议或提示。

python opencv

5
推荐指数
1
解决办法
5666
查看次数

如何在python中将黑白图像转换为3维数组?

我有RGB格式或灰度格式的图像(例如,我通过Gimp对其进行了转换),现在每次我以灰度级加载图像,或者只是将其转换为灰度格式时,形状始终显示[height,width],而没有第三个尺寸(颜色通道数)。

我知道通常黑白图像都是以这种格式存储的,但是我特别需要[height, width, 1]图像形状,即可以得到的图像形状,例如:

numpy.zeros(shape=[400, 400, 1])
Run Code Online (Sandbox Code Playgroud)

python numpy image image-processing computer-vision

4
推荐指数
2
解决办法
3289
查看次数

如何将当前目录作为参数传递给脚本?

这在 Python 中可能吗?我在 linux 上工作,所以我想知道是否有办法在调用脚本时组合 bash 命令(类似于 pwd)。

python arguments

0
推荐指数
1
解决办法
4372
查看次数