从Pythoner赖勇浩的blog看到一篇文章关于利用python来进行图像处理的,很是觉得好玩,于是试验了下。
Python Imaging Library--PIL
import Image
img 
= Image.open('test.bmp')
print img.format, img.size, img.mode
new_img 
= img.convert('L')
new_img.show();
new_img = img.convert('L')是把图像转换为灰度。
打开PIL的handbook研究一番

截取图像中的一块box大小
    box = (100, 100, 400, 400)
    region = im.crop(box)

图片逆时针旋转90度
im.transpose(Image.ROTATE_90)
图片逆时针旋转270度
im.transpose(Image.ROTATE_270)
图片倒置(逆时针旋转180度)
im.transpose(Image.ROTATE_180)

out = im.transpose(Image.FLIP_LEFT_RIGHT)     左右互置
out = im.transpose(Image.FLIP_TOP_BOTTOM)  上下互置

用ImageFilter模块来进行图像增强:
Point Operations:
# multiply each pixel by 1.2
out = im.point(lambda i: i * 1.2)

(未完待续)
http://www.pythonware.com/library/pil/handbook/index.htm

附:赖老师的文章:用python做图像处理 http://blog.csdn.net/lanphaday/archive/2007/10/28/1852726.aspx

posted @ 2008-11-06 15:38 Robert Su 阅读(657) | 评论 (0)编辑 收藏

今天新系统装完IIS测试之后,又装了一个office 2007(daob)、跟D-tool,然后IIS直接无法启动。
重新安装也不行。
到微软官方网站找解决办法,恢复MMC还是无济于事

最终解决办法很简单,先把os安装盘装入光驱,卸载IIS,然后重新安装,ok了

posted @ 2008-11-06 13:44 Robert Su 阅读(150) | 评论 (0)编辑 收藏

#include "stdafx.h"
#include 
<iostream>
#include 
<vector>   
using   namespace std;   


void   vect(vector<int>   &ve)   
{   
          ve.push_back(
100);   
}
   
    
void   main()   
{   
          vector
<int>   v;   
          vect(v);
          
for (vector<int>::iterator it = v.begin();it != v.end();++it)
          cout
<<*it<<endl;}

          cin.
get();
}

posted @ 2008-10-10 11:10 Robert Su 阅读(4664) | 评论 (0)编辑 收藏

 

#include <iostream> 
#include 
<vector> 

using namespace std; 
int main()
int ia[] = {1,2,3,4,5,6,7,8,9}
vector
<int> ivec(ia,ia+9); 
vector
<int> tvec(ia,ia+9); 
for (vector<int>::iterator it = ivec.begin();it != ivec.end();++it)
for (vector<int>::iterator iv = tvec.begin();iv != tvec.end();++iv)
cout
<<*it<<"*"<<*iv<<"="<<*it * *iv<<" "
if(*iv == 9
cout
<<endl; 
}
 
}
 
}
 

posted @ 2008-10-08 15:34 Robert Su 阅读(1463) | 评论 (0)编辑 收藏

111
import sys
def readfile(filename):
        
'''Print a file the standard output.'''
        f 
= file(filename)
        
while True:
                line 
= f.readline()
                
if len(line) == 0:
                        
break
                
print line, #notice comma
        f.close()

if len(sys.argv) < 2:
        
print 'No action specified.'
        sys.exit()

if sys.argv[1].startswith('--'):
        option 
= sys.argv[1][2:]
        
if option == 'verison':
                
print 'Version 1.2'
        
elif option == 'help':
                
print '''\
This program prints files to the standard output.
Any number of files can be specified.
Options include:
        --version : Print the version number
        --help    : Display this help
'''
                
else:
                
print 'Unknown option.'
                sys.exit()
else:
        
for filename in sys.argv[1:]:
                readfile(filename)
运行提示:
D:\python>python cat.py
  File "cat.py", line 27
    else:
       ^
SyntaxError: invalid syntax

谁知道这个哪里出错了啊

posted @ 2008-08-15 17:41 Robert Su 阅读(1248) | 评论 (2)编辑 收藏

 

#include <stdio.h> 
void ShowMe() 

  printf(
"showme\n"); 

int add(int value,int value1) 

  
int * pAdd=&value; 
  
int* value2=pAdd-1
  
*value2=*value2-0x0e
  
return (value+value1); 

/* 
*/ 
int add3v(int v,int v1,int v2) 

  
return (v+v1+v2); 

int main(int argc, char* argv[]) 
{    ShowMe(); 
      
int temp=add(10,12); 
      
int te=add3v(3,4,5); 
        printf(
"%d,%d",temp,te); 

        
return 0
}

这个程序输入在VC下是一直是showMe,死循环
结果是:不停的调用showme()。
showme
showme
showme
showme
showme
showme
showme
。。。


请教了同学,找出了答案
这个是自动变量存储栈,传给函数的参数是以栈这种结构来开辟暂时存贮空间的。现在的C++编译器处理函数参数后按照参数表的顺序往临时开辟的栈空间中压入数据,以这段程序来说~先压进value,再压进value1,而函数内部语句的执行代码也是以栈的形式存贮的
 ShowMe();这段程序的执行代码是最先被压入函数的执行栈中的,int temp=add(10,12); 地址要高于ShowMe();这个函数的地址
,int temp=add(10,12); 把地址又改回里低地址。
局部函数的参数
函数内代码的执行,都是按照栈这种方法进行的

这道题目不能说没有意思,主要考察了基础的汇编以及堆栈知识。
int* value2=pAdd-1;
*value2=*value2-0x0e;

这里明显修改了add函数返回地址,刚恰好showme()的入口地址,所以就
add->showme->add->showme ...
不停的调用下去。


posted @ 2008-08-08 18:14 Robert Su 阅读(1501) | 评论 (0)编辑 收藏

去年的一道面试题,想起来了,顺遍把代码贴到这里
两个数组合并到一起,然后排序;用set确实比较方面了

#include<iostream>
#include
<set>  
#include
<iterator>
#include
<algorithm>  
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{

    
int a[5]={2,5,1,2,3    };
    
int b[10]={8,9,5,9,7,1,3,4,4,6};

    
set<int>ist(a,a+sizeof(a)/sizeof(a[0])); 
    
set<int>::iterator  itor; 
    
set<int>it(b,b+sizeof(b)/sizeof(b[0]));
    
set<int>::iterator p;
    
for( itor = ist.begin();itor !=ist.end();++itor)   
    { 
        cout
<<*itor<<endl;
    }
    
for(p=it.begin();p!=it.end();++p)
    { 
        cout
<<*p<<endl;

    }
    cout
<<"合并后:"<<endl;  

    
set<int>su;
    
set<int>::iterator q;
    set_union(ist.begin(),ist.end(),it.begin(),it.end(),inserter(su,su.begin()));

    
for(q=su.begin();q!=su.end();++q)
    {
        cout
<<*q<<endl;
    }
    
return 0;
}

}

posted @ 2008-08-08 15:26 Robert Su 阅读(1307) | 评论 (0)编辑 收藏

今天qu推荐了一个软件给我——Cardio Calipers
一款刻度尺软件,可以测量屏幕上某个东西的长度,挺好玩的,很有想法:)

下载地址:
http://www.iconico.com/cardioCaliper/

附截图




这个尺子通过鼠标可以旋转,拉长缩短

posted @ 2008-08-07 15:50 Robert Su 阅读(2665) | 评论 (5)编辑 收藏

操作的系统的多进程实现了___________
多线程的根本是________________
JVM线程调度方式是______________

posted @ 2008-07-24 10:37 Robert Su 阅读(1108) | 评论 (0)编辑 收藏

今天晚上真的非常郁闷.本来心情高涨的要继续写程序.但是老乡给我传了一个抓包程序要我帮他测试下,一装直接蓝屏.
一开机就蓝屏,可以进安全模式,删了该删的还是继续蓝.
这哥们居然下线睡觉去了.

装进去系统盘,提示找不到OS
可是我把Ubuntu的盘放进去,居然就出现提示,问我要不要安装.....

奇怪...
哪位这方面的行家给指点一下啊

posted @ 2008-06-25 02:48 Robert Su 阅读(417) | 评论 (0)编辑 收藏

仅列出标题
共11页: First 上一页 3 4 5 6 7 8 9 10 11 下一页 

posts - 103, comments - 104, trackbacks - 0, articles - 5

Copyright © Robert Su