Nem*_*rai 5 python opencv python-3.x
为什么我的代码中没有显示矩形?
import cv2
im = cv2.imread('players.bmp')
#im.shape >>returns (765,1365,3)
cv2.rectangle(im, (64,1248), (191,1311), (0,255,0), 2)
cv2.namedWindow("image", cv2.WINDOW_NORMAL)
cv2.imshow('image', im)
cv2.waitKey(0)
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)
它不显示矩形,因为您正在将其绘制在图像之外。
为什么?你可能会问。很简单。你有这个:
#im.shape >>returns (765,1365,3)
Run Code Online (Sandbox Code Playgroud)
这意味着
rows/height = 765
cols/width = 1365
channels = 3
Run Code Online (Sandbox Code Playgroud)
然后你就做
cv2.rectangle(im, (64,1248), (191,1311), (0,255,0), 2)
Run Code Online (Sandbox Code Playgroud)
这里你使用了两个点,它们是元组 (x,y),但是你将它们写成就好像它们是元组 (y,x) 一样。我知道 OpenCV 在很多函数中使用 (y,x) 的顺序,但这是因为他们将图像视为矩阵,通常通过转换为 (y,x) 的 (行,列) 来访问。在此矩形的情况下,它们需要以典型笛卡尔方式 (x,y) 表示的点。
总之,只需将其更改为:
cv2.rectangle(im, (1248, 64), (1311, 191), (0,255,0), 2)
Run Code Online (Sandbox Code Playgroud)
它应该有效。
| 归档时间: |
|
| 查看次数: |
11510 次 |
| 最近记录: |