专栏首页python3Python OpenCV 图片反色、调

Python OpenCV 图片反色、调

OpenCV 版本:3.0.0 Python版本:2.7.10

实现图像反色:

实现原理:

读取每个像素值P,再将255-P写入新的图片中;

对于灰度图,只有一个通道,所以 img2[i,j] = (255-image[i,j]) ;

对于彩色图片,则要RGB值分别做处理,255-image[i,j][0],255-image[i,j][1],255-image[i,j][2];

灰度图:

def inverse_color(image):

    height,width = image.shape
    img2 = image.copy()

    for i in range(height):
        for j in range(width):
            img2[i,j] = (255-image[i,j]) 
    return img2

彩色图:

def inverse_color(image):

    height,width,temp = image.shape
    img2 = image.copy()

    for i in range(height):
        for j in range(width):
            img2[i,j] = (255-image[i,j][0],255-image[i,j][1],255-image[i,j][2]) 
    return img2

调整图片大小:

有4种参数:

CV_INTER_NN - 最近邻插值,

CV_INTER_LINEAR - 双线性插值 (缺省使用)

CV_INTER_AREA - 使用象素关系重采样

CV_INTER_CUBIC - 立方插值.

def resize(img,width,height):
    res=cv2.resize(img,(width,height),interpolation=cv2.INTER_CUBIC)
    return res

遍历目录下所有图片并将图片进行反色处理、调整大小, 最后按照每张图片一行存储在txt中:

__author__ = 'geyalu'

import cv2
import os
""" Trans image to pixel data and saved in a txt  """


def list_dir(rootDir):
    """list all files in a direction and return img_path """
    img_path=[]
    for lists in os.listdir(rootDir):
        path = os.path.join(rootDir, lists)
        print path
        img_path.append(path)
        if os.path.isdir(path):
            list_dir(path)
    return img_path


def load_img(path):
    img = cv2.imread(path,0)
    #cv2.imshow('Image', img)
    #cv2.waitKey (0)
    #cv2.destroyAllWindows()
    return img


def img_to_list(img):
    """trans img to pixel data"""
    temp_data=[]
    height,width = img.shape
    for i in range(height):
        for j in range(width):
            temp=img[i,j]
            temp_data.append(str(temp))
    data_w=','.join(temp_data)
    return data_w


def inverse_color(image):

    height,width = image.shape
    img2 = image.copy()

    for i in range(height):
        for j in range(width):
            img2[i,j] = (255-image[i,j]) # For GRAY_SCALE image ;
                                         # for R.G.B image: img2[i,j] = (255-image[i,j][0],255-image[i,j][1],255-image[i,j][2])
    return img2


def resize(img,width,height):
    res=cv2.resize(img,(width,height),interpolation=cv2.INTER_CUBIC)
    return res



def main_resize_inverse():

    rootdir=r"F:\hand_number2"    #direction you want to traverse
    img_path=list_dir(rootdir)

    fp=open('hand_numbers2.txt','a') #results you want to save

    for i in img_path:
        img=load_img(i)
        img_res=resize(img,28,28)
        img_res_inverse=inverse_color(img_res)


        cv2.imshow('Image', img_res_inverse)
        cv2.waitKey (0)
        cv2.destroyAllWindows()

        img_data=img_to_list(img_res_inverse)

        fp.writelines(img_data)
        fp.write('\n')

    fp.close()


def main_only_Trans_to_txt():

    rootdir=r"F:\number9"    #direction you want to traverse
    img_path=list_dir(rootdir)

    fp=open('hand_numbers.txt','a') #results you want to save

    for i in img_path:
        img=load_img(i)
        img_data=img_to_list(img)

        fp.writelines(img_data)
        fp.write('\n')

    fp.close()


if __name__ == '__main__':
    """Choose main function
        main_resize_inverse()
        main_only_Trans_to_txt()
    """

    main_only_Trans_to_txt()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 生产者与消费者+Queue(线程安全)

      如果使用threading.Lock(),或者threading.Condition(),都是线程不安全的,它们都是锁,共同方法(lock.acquire(...

    py3study
  • 数字识别之图像转为二进制数据

    py3study
  • 每天一个设计模式·代理模式

    代理模式可以解决避免对一些对象的直接访问,以此为基础,常见的有保护代理和虚拟代理。保护代理可以在代理中直接拒绝对对象的访问;虚拟代理可以延迟访问到真正需要的时候...

    py3study
  • 21天打造分布式爬虫-多线程下载表情包(五)

    网址:http://www.doutula.com/photo/list/?page=1

    zhang_derek
  • 生产者与消费者+Queue(线程安全)

      如果使用threading.Lock(),或者threading.Condition(),都是线程不安全的,它们都是锁,共同方法(lock.acquire(...

    py3study
  • python智能图片识别系统(图片切割、图片识别、区别标识)

    你好! python flask图片识别系统使用到的技术有:图片背景切割、图片格式转换(pdf转png)、图片模板匹配、图片区别标识。

    用户6334815
  • 【Python基础】Python中读取图片的6种方式

    Python进行图片处理,第一步就是读取图片,这里给大家整理了6种图片的读取方式,并将读取的图片装换成numpy.ndarray()格式。首先需要准备一张照片,...

    黄博的机器学习圈子
  • 爬取数据缺失的补坑,Python数据爬取的坑坑洼洼如何铲平

    渣渣业余选手讲解,关于爬取数据缺失的补坑,一点点关于Python数据爬取的坑坑洼洼如何铲平,个人的一些心得体会,还有结合实例的数据缺失的补全,几点参考,仅供观赏...

    二爷
  • 安防视频云服务EasyCVR集成海康SDK时语音对出现杂音问题,如何解决?

    安防视频云服务EasyCVR能够支持多种不同的协议,包括RTSP、GB28181、海康SDK、EHome等私有协议,目前更多的协议也正在拓展中(EasyCVR如...

    EasyNVR
  • python PIL 打开\显示\保存图像

    使用python进行数字图片处理,还得安装Pillow包。虽然python里面自带一个PIL(python images library), 但这个库现在已经停...

    于小勇

扫码关注云+社区

领取腾讯云代金券