Just for Private study
import numpy as np
import cv2
from numpy import *
def cv2_imread(file_path, flag=1):
return cv2.imdecode(np.fromfile(file_path, dtype=np.uint8), flag)
def complement(color):
return [255 - c for c in color]
if __name__ == "__main__":
img = cv2_imread("D:R18Rosmontis.jpg")
for i in range(img.shape[0]):
for j in range(img.shape[1]):
# 获取当前像素点的颜色值
color = img[i, j].tolist()
# 转换为补色
complement_color = complement(color)
# 将当前像素点的颜色值更新为补色
img[i, j] = complement_color
img_flipped = cv2.flip(img, 0)
cv2.imshow("TEST", img_flipped)
cv2.waitKey(0)
cv2.destroyAllWindows()
img2 = cv2_imread("D:R18Rosmontis.jpg")
if img2 is None:
print("无法读取图片文件")
else:
# cv2.imshow("test-original", img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imshow("test-original", img2)
gray_img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)
#cv2.imshow("test-grayoriginal", gray_img2)
bright_img = gray_img2 + 50
bright_img2 = np.clip(bright_img, 0, 255) # 这里应该就是灰度图片
bgr_img2 = cv2.cvtColor(bright_img2, cv2.COLOR_GRAY2BGR)
cv2.imshow("grayimage", gray_img2)
#cv2.imshow("test-original", img2)
cv2.imshow("test-brightened", bgr_img2)
for i in range(bgr_img2.shape[0]):
for j in range(bgr_img2.shape[1]):
# 获取当前像素点的颜色值
color = bgr_img2[i, j].tolist()
# 转换为补色
complement_color = complement(color)
# 将当前像素点的颜色值更新为补色
bgr_img2[i, j] = complement_color
cv2.imshow("grayimagecomplement", bright_img2)
# 将灰度图片转换为BGR格式
bgr_img_complement = cv2.cvtColor(bright_img2, cv2.COLOR_GRAY2BGR)
for i in range(bgr_img_complement.shape[0]):
for j in range(bgr_img_complement.shape[1]):
color = bgr_img_complement[i, j].tolist()
complement_color = complement(color)
bgr_img_complement[i, j] = complement_color
cv2.imshow("grayimagecomplement-color", bgr_img_complement)
'''GCCRGB = cv2.cvtColor(bgr_img_complement, cv2.COLOR_BGR2RGB)
cv2.imshow("FUCKOFF", GCCRGB)
'''
# 上面一坨大便没用 不知道为什么 麻了
# 因为RGB图像变灰度以后就改不回去了,感觉不如原神
cv2.waitKey(0)
cv2.destroyAllWindows()
def hcf(x, y):
if x > y:
smaller = y
else:
smaller = x
for i in range(1, smaller + 1):
if ((x % i == 0) and (y % i == 0)):
hcf = i
return hcf
def average_pooling(img):
G=maxhcf;
out = img.copy()
H, W, C = img.shape
Nh = int(H / G)
Nw = int(W / G)
for y in range(Nh):
for x in range(Nw):
for c in range(C):
out[G * y:G * (y + 1), G * x:G * (x + 1), c] = np.mean(
out[G * y:G * (y + 1), G * x:G * (x + 1), c]).astype(np.int64)
return out
# Read image
img5 = cv2_imread("D:R18Rosmontis.jpg")
img_0=img5.shape[0]
img_1=img5.shape[1]
#print(img_0);print(img_1)
maxhcf=hcf(img_0,img_1)
# Average Pooling
out = average_pooling(img5)
# Save result
cv2.imwrite("out.jpg", out)
cv2.imshow("result", out)
cv2.namedWindow("result", cv2.WINDOW_NORMAL)
win_size = cv2.getWindowImageRect("result")[2:4]
# 计算当前窗口的宽度和高度
win_w, win_h = win_size[0], win_size[1]
# 计算原始图像的宽高比和当前窗口的宽高比
img_w, img_h = out.shape[1], out.shape[0]
img_ratio = img_w / img_h
win_ratio = win_w / win_h
# 根据宽高比缩放图像
if img_ratio > win_ratio:
new_w = win_w
new_h = int(win_w / img_ratio)
else:
new_h = win_h
new_w = int(win_h * img_ratio)
out_resized = cv2.resize(out, (new_w, new_h))
cv2.imshow("result", out_resized)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.waitKey(0)
cv2.destroyAllWindows()