python二值化图片后,图片显示是正确的,但是保存为什么是全黑??附代码和运行结果
可能是因为保存时使用的像素值范围不正确。在二值化后,像素值只有0和1,而保存时使用的像素值范围可能是0到255。因此,需要将像素值范围转换为0到255,然后再保存。可以使用以下代码将像素值范围转换为0到255:
修改代码如下:
import cv2
import numpy as np
import matplotlib.pyplot as plt
im_in=cv2.imread("peter.png”,O)#灰度图
#归一化(0,1)
im_in=im_in /255
#二值化
im_in_h,im_in_w im_in.shape
for i in range(im_in_h):
for j in range(im_in_w):
if(imin[i][j]<=0.4):
im_in[i][j]=1
else:
im_in[i][j]=0
#可视化
#修改代码
im_in = im_in * 255
im_in = im_in.astype(np.uint8)
cv2.imshow('peter0.png',im_in)
cv2.imwrite('peter0.png',im_in)
cv2.waitKey(0)
导入模块
import pygame
import sys
import traceback
import os
import CXK
import enemy
import bullet
import supply
from pygame.locals import *
from random import *
游戏主界面
#游戏主界面
def ui():
#循环播放背景音乐
pygame.mixer.music.play(-1)
#初始化界面按键图片并获取图片的矩形位置
start_game_image = pygame.image.load("images/start_game.png").convert_alpha()
start_game_image_rect = start_game_image.get_rect()
game_rules_image = pygame.image.load("images/game_rules.png").convert_alpha()
game_rules_image_rect = game_rules_image.get_rect()
game_quit_image = pygame.image.load("images/game_quit.png").convert_alpha()
game_quit_image_rect = game_quit_image.get_rect()
#初始化游戏规则图片并获取图片的矩形位置
rules_image = pygame.image.load("images/游戏玩法.png").convert_alpha()
back_image = pygame.image.load("images/back.png").convert_alpha()
back_image_rect = back_image.get_rect()
#标志是否在主界面
is_ui = True
#帧率
clock = pygame.time.Clock()
#主界面循环
while True:
#获取事件信息
for event in pygame.event.get():
#如果点击右上角退出
if event.type == QUIT:
#退出程序
pygame.quit()
sys.exit()
#如果是主界面
if is_ui:
#绘制背景
screen.blit(background,(0,0))
#更改主界面按键图片的矩形位置并绘制主界面按键
start_game_image_rect.left,start_game_image_rect.top = (width - start_game_image_rect.width)//2,height - 500
screen.blit(start_game_image,start_game_image_rect)
game_rules_image_rect = game_rules_image.get_rect()
game_rules_image_rect.left,game_rules_image_rect.top = (width - game_rules_image_rect.width)//2,start_game_image_rect.bottom+50
screen.blit(game_rules_image,game_rules_image_rect)
game_quit_image_rect.left,game_quit_image_rect.top = (width - game_quit_image_rect.width)//2, game_rules_image_rect.bottom+50
screen.blit(game_quit_image,game_quit_image_rect)
#检测用户的鼠标操作
#如果用户按下鼠标左键
if pygame.mouse.get_pressed()[0]:
#获取鼠标坐标
pos = pygame.mouse.get_pos()
#如果用户点击”开始游戏“
if start_game_image_rect.left < pos[0] < start_game_image_rect.right and start_game_image_rect.top < pos[1] < start_game_image_rect.bottom:
#调用主函数
main()
#如果用户点击”退出游戏“
if game_quit_image_rect.left < pos[0] < game_quit_image_rect.right and game_quit_image_rect.top < pos[1] < game_quit_image_rect.bottom:
pygame.quit()
sys.exit()
#如果用户点击”游戏规则“
if game_rules_image_rect.left < pos[0] < game_rules_image_rect.right and game_rules_image_rect.top < pos[1] < game_rules_image_rect.bottom:
#离开主界面
is_ui = False
代码量有点多,就没有全部粘贴出来
公众号:Python日志
需要源码的小伙伴可以在公众号回复蔡徐坤大战篮球