0

私は Python での画像解析に問題がある R ユーザーです。画像の中心にある建物の面積を計算する効率的な方法は何ですか? 目標は、エッジ アルゴリズムを Google マップの静止画像に適用し、住所の屋上の表面積を計算することです。

from pygeocoder import Geocoder
import urllib
import numpy as np
from scipy import ndimage
from skimage import filter, io, measure
import matplotlib.pyplot as plt

def getMap(address):
    """Geocode address and retreive image centered
    around lat/long"""

    results = Geocoder.geocode(address)
    lat, lng = results[0].coordinates
    zip_code = results[0].postal_code

    map_url = 'https://maps.googleapis.com/maps/api/staticmap?center={0},{1}&size=640x640&zoom=19&sensor=false&maptype=roadmap&&style=visibility:simplified|gamma:0.1'
    request_url = map_url.format(lat, lng)
    req = urllib.urlopen(request_url)
    return(req)

def mapEdge(req):
    """Convert img to bytearray and do edge detection
    on centered building"""

    img = io.imread(req.geturl(),flatten=True)
    labels, numobjects = ndimage.label(img)
    edges = filter.canny(img, sigma=3)
    plt.imshow(edges, cmap=plt.cm.gray)
    plt.show()

map_tmp = getMap('1403 Elmwood Ave., Evanston, IL')
mapEdge(map_tmp)
4

2 に答える 2

1

進行する1つの方法は、opencvで利用可能な輪郭検出技術を使用してから、輪郭の中心を検出することです. コードは C++ ですが、非常に簡単に Python に変換できます。

    findContours( dst4, contours2, hierarchy2, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);
    vector<vector<Point> > contours_poly2( contours2.size() );
    vector<Rect> boundRect2( contours2.size() );
    cout << contours2.size()<<endl;
    Mat drawing1=Mat::zeros(dst4.rows,dst4.cols,dst4.depth());
    for( int i = 0; i < contours2.size(); i++ ){
        approxPolyDP( Mat(contours2[i]), contours_poly2[i], 3, true );
        boundRect2[i] = boundingRect( Mat(contours_poly2[i]) );
    }

境界四角形のベクトルがあるので、境界四角形の中心が画像の中心に非常に近い場合は、正の一致です。

これは、python http://opencvpython.blogspot.in/2012/06/hi-this-article-is-tutorial-which-try.htmlを使用した輪郭検索のチュートリアルです。

お役に立てれば

于 2014-06-13T08:09:24.963 に答える
0

私はそれらのライブラリの1つを見ます:

于 2014-06-12T21:46:17.673 に答える