我有一个看起来像这样的数组
boxes = [268,885,426,865,406,707,248,727]
这是(x,y)
分的集合。如果我使用此功能绘制此图:
def draw_boxes_on_image_mod(image, boxes):
image_copy = image.copy()
image_copy = np.array(image_copy)
cv2.line(image_copy, (boxes[0],boxes[1]),(boxes[2],boxes[3]),(0,255,255),2)
cv2.line(image_copy, (boxes[4], boxes[5]),(boxes[6],boxes[7]),(0,255,255),2)
cv2.line(image_copy, (boxes[0],boxes[1]),(boxes[6],boxes[7]),(0,255,255),2)
cv2.line(image_copy, (boxes[4], boxes[5]),(boxes[2],boxes[3]),(0,255,255),2)
scipy. misc.imsave('/home/ryan/TEST.png', image_copy)
return image_copy
我得到的图像上有一个我感兴趣的部分绘制的矩形,但是我想要的是提取该部分并将其转换为图像。
我当时正在考虑使用NumPy索引来实现这一目标,但是
image = image[268:426]
我发现很难理解如何将(x,y)值索引在一起。
任何建议都会非常有帮助。谢谢。
答案 0 :(得分:1)
当您仅调用A [1:3]时,您所需要的只是第1行和第2行,包括1行并在3之前停止的行,因此您还必须考虑各列以获取所需的确切子节。
您可以通过指定行和列的范围以numpy的方式执行此操作,所需数组的子部分将从行开始,以行+ m结束,以及以列开始,并以column + n结束
例如
public class Main3Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
Intent intent = new Intent(this, Main2Activity.class);
startActivity(intent);
}
}
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
}
我们只想将中间的值设置为1,所以我们用
选择它们 A = np.array([[0, 0, 0, 0],
[0, 1, 1, 0],
[0, 1, 1, 0],
[0, 0, 0, 0]])
获取
Asub = A[1:3,1:3]