【发布时间】:2019-03-26 06:36:44
【问题描述】:
所有图片的大小为(1080, 1920, 3)。我想像(500, 500, 3)一样从右到左裁剪图像。我试过以下代码:
img = img[0:500, 0:500] #y, x
据我所知,它是从左到右工作的。并且还需要裁剪名为ROI 的中间部分,它的大小也将是(500, 500, 3)。
这些怎么做?
->(Q.1)
1920
--------------
| |
| 500 |
| -------|
| | |
| | |
| -------|500
| 0 |
| |
--------------
0 1080
->(Q.2)
1920
--------------
| |
| 500 |
| ------- |
| | | |
| | | |
| -------500|
| 0 |
| |
--------------
0 1080
【问题讨论】:
-
我觉得this thread和this thread可以回答你的问题。
-
OpenCV 使用 (0,0) 位于左上角的坐标系。所以
img[0:500, 0:500]会在图片的左上角给你一个正方形。您需要知道起始 x 和 y,然后执行img[y:y+500, x:x+500]之类的操作。例如,这个 x 和 y 可以是x= 1080/2 -250和y= 1920/2 -250以获得一个居中的正方形。 -
` x= 1080//2 - 250 y= 1920//2 - 250 img = img[y:y+500, x:x+500] `我得到
img.size = (370, 500,3)。怎么样? -
您将
row / col与x / y混淆了