黑白照片转换成彩色照片(无需任何编程)

单张情况

直接点击这个链接点这里,就可以进行图片转换了,但是百度对传入的图像有要求,传入的图像如果是jpg格式,那么不能大于2M。在这里插入图片描述

多张情况

如果要多张,甚至更多,超过1000张,都没关系,只要存放到一个文件夹中,程序就会自动读取,然后一张一张的上传给百度,处理之后图片再返回来,存放到本地文件夹中,这样任意多张的图片也可以处理了。

# -*- coding: utf-8 -*-
"""
Created on Wed Apr 29 13:39:37 2020

@author: hanhyalex
"""
import requests
import base64
import numpy as np
import cv2 as cv
import os,sys
import matplotlib.pyplot as plt
def baidu_api(img,photo_index):
	global newpics_stor_dir
    os.chdir(newpics_stor_dir)
    request_url = "https://aip.baidubce.com/rest/2.0/image-process/v1/colourize"
    params = {"image":img}
    access_token = '[在此处填下你的tocken]'
    request_url = request_url + "?access_token=" + access_token
    headers = {'content-type': 'application/x-www-form-urlencoded'}
    response = requests.post(request_url, data=params, headers=headers)
    if response:
        # print (response.json())
        res=response.json()
        img=base64.b64decode(res['image'])
        f=open(photo_index,"wb+")
        f.write(img)
        img=cv.imread(photo_index)
        plt.imshow(img[:,:,::-1])
        plt.show()

oldpics_stor_dir=r'C:\Users\86198\Desktop\old'
#这里填上黑白照片的路径
newpics_stor_dir=r'C:\Users\86198\Desktop\new'
#这里填上准备把彩色照片存储的路径
temp_dir=r'C:\Users\86198\Desktop\resized'
#这里是中转路径
#oldpics_stor_dir
os.chdir(oldpics_stor_dir)
all_pic=os.listdir(oldpics_stor_dir)     
t=1
#t用来给生成的照片编号
for pic in all_pic:
    os.chdir(oldpics_stor_dir)
    photo_index=pic
    #pic是当前照片的文件名,字符串格式
    x=1
    #i用来将图片缩小到合适的大小
    img = cv.imread(photo_index,0)
    size=np.shape(img)
    max_size=np.max(size)
    test=max_size
    while test>800:
        test=max_size/x
        x+=0.2
    img=cv.resize(img,(int(size[1]/x),int(size[0]/x)))
    # img=cv.cvtColor(img,)
    photo_index=str(t)+'.jpg'
    os.chdir(temp_dir)
    cv.imwrite(photo_index,img)
    f = open(photo_index, 'rb')
    img = base64.b64encode(f.read())
    baidu_api(img,photo_index)
    f.close()
    t+=1

问题来了,如何获取你的百度tocken呢,请看 这篇博文

结果展示

输入:在这里插入图片描述

输出:
在这里插入图片描述
有任何问题都可以留言询问

if(strPathName == "") return false; BITMAPFILEHEADER * pBFH; BITMAPINFOHEADER * pBIH; CFile file(strPathName,CFile::modeCreate | CFile::modeNoTruncate | CFile::modeRead); DWORD filelength = file.GetLength(); // 分配一块内存用于装入图象数据 if(m_hDib!=NULL) ::GlobalFree(m_hDib); m_hDib = :: GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT,filelength); if(m_hDib==NULL) { return (FALSE); } m_pDib = (BYTE *)::GlobalLock(m_hDib); if(m_pDib==NULL) { ::GlobalFree(m_hDib); return (FALSE); } // 将图象数据读入内存 file.Read(m_pDib,(UINT)filelength); file.Close(); // 读入头信息 pBFH = (BITMAPFILEHEADER *) m_pDib; pBIH = (BITMAPINFOHEADER *) (m_pDib+sizeof(BITMAPFILEHEADER)); WORD bfType = pBFH->bfType; if(bfType!=19778) // "BM"标志 { AfxMessageBox("Not a valid BMP image!"); return FALSE; } //得到位图信息 m_nWidth = (int)pBIH->biWidth; m_nHeight = (int)pBIH->biHeight; m_nBits = (int)pBIH->biBitCount; m_nColors = (int)pBIH->biClrUsed; if(m_nColors == 0) { if(m_nBits <= 8) m_nColors = 1 << m_nBits; } m_strPathName = strPathName; // 载入调色板 m_Palette.DeleteObject(); if( m_nBits <= 8 ) m_nPaletteInBytes = m_nColors * sizeof( RGBQUAD ); if( m_nBits <= 8 ) { RGBQUAD *pRGBPalette; pRGBPalette = ( RGBQUAD * )&m_pDib[ sizeof( BITMAPFILEHEADER ) + sizeof( BITMAPINFOHEADER ) ]; LOGPALETTE *pLogPalette; pLogPalette = ( LOGPALETTE * )new char[ sizeof( LOGPALETTE ) + m_nColors * sizeof( PALETTEENTRY ) ]; pLogPalette->palVersion = 0x300; pLogPalette->palNumEntries = ( unsigned short )m_nColors; for(int i=0; i<m_nColors; i++ ) { pLogPalette->palPalEntry[ i ].peRed = pRGBPalette[ i ].rgbRed; pLogPalette->palPalEntry[ i ].peGreen = pRGBPalette[ i ].rgbGreen; pLogPalette->palPalEntry[ i ].peBlue = pRGBPalette[ i ].rgbBlue; pLogPalette->palPalEntry[ i ].peFlags = 0; } if( pLogPalette == NULL ) { ::GlobalUnlock( m_hDib ); return FALSE; } m_Palette.CreatePalette( pLogPalette ); delete[] pLogPalette; }
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值