numpy - 制作重复的随机数字块(噪声图像)

时间:2018-04-26 06:49:12

标签: python arrays numpy noise numpy-ndarray

我想做一个"噪音"图片。如果我做

img = np.random.randint(0, 255, (4, 4), dtype=np.uint8)
print(img)

出:

array([[150,  45, 246, 137],
       [195, 141, 246, 197],
       [206, 126, 188,  76],
       [134, 168, 166, 190]])

每个像素都不同。但是,如果我想要更大的像素,例如:

,该怎么办?
array([[150, 150, 246, 246],
       [150, 150, 246, 246],
       [206, 206, 188, 188],
       [206, 206, 188, 188]])

我该怎么办?

1 个答案:

答案 0 :(得分:2)

您可以使用ObservableList<Bot> bots = FXCollections.observableArrayList(); @FXML private TableView<Bot> botTable; @FXML private TableColumn<Bot, String> nameColumn; @FXML private TableColumn<Bot, Boolean> statusColumn; public void initialize(URL location, ResourceBundle resources){ nameColumn.setCellValueFactory(new PropertyValueFactory<Bot, String>("name")); statusColumn.setCellValueFactory(new PropertyValueFactory<Bot, Boolean>("on")); statusColumn.setSortable(false); statusColumn.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Bot, Boolean>, ObservableValue<Boolean>>(){ @Override public ObservableValue<Boolean> call(TableColumn.CellDataFeatures<Bot, Boolean> features) { return new SimpleBooleanProperty(features.getValue() != null); } }); // create a cell value factory with an add button for each row in the table. statusColumn.setCellFactory(new Callback<TableColumn<Bot, Boolean>, TableCell<Bot, Boolean>>() { @Override public TableCell<Bot, Boolean> call(TableColumn<Bot, Boolean> personBooleanTableColumn) { return new AddBotCell(/*stage, botTable*/); } }); botTable.setItems(bots); } /** A table cell containing a button for adding a new person. */ private class AddBotCell extends TableCell<Bot, Boolean> { // a checkbox for adding a new bot. final CheckBox checkbox = new CheckBox(); // pads and centers the add button in the cell. final StackPane paddedCheckBox = new StackPane(); AddBotCell(/*final Stage stage, final TableView table*/) { paddedCheckBox.setPadding(new Insets(3)); paddedCheckBox.getChildren().add(checkbox); checkbox.setOnMouseClicked(new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent event) { } }); } /** places an add checkbox in the row only if the row is not empty. */ @Override protected void updateItem(Boolean item, boolean empty) { super.updateItem(item, empty); if (!empty) { setContentDisplay(ContentDisplay.GRAPHIC_ONLY); setGraphic(checkbox); } } }

np.kron

>>> np.kron(np.random.randint(0, 256, (4, 4)), np.ones((2, 2), int)) array([[252, 252, 51, 51, 10, 10, 124, 124], [252, 252, 51, 51, 10, 10, 124, 124], [161, 161, 137, 137, 8, 8, 89, 89], [161, 161, 137, 137, 8, 8, 89, 89], [ 12, 12, 24, 24, 37, 37, 98, 98], [ 12, 12, 24, 24, 37, 37, 98, 98], [151, 151, 149, 149, 147, 147, 15, 15], [151, 151, 149, 149, 147, 147, 15, 15]]) (每个维度一次):

np.repeat