চিত্রের আকার পেতে পাইথন ওপেনসিভি 2 (সিভি 2) মোড়ক?


101

cv2পাইথন ওপেনসিভিতে আচ্ছাদনযুক্ত কোনও চিত্রের আকার কীভাবে পাবেন (নমপি)। এটি ছাড়াও কি সঠিক উপায় আছে numpy.shape()? আমি কীভাবে এই বিন্যাসের মাত্রা: (প্রস্থ, উচ্চতা) তালিকায় পেতে পারি?


4
numpy.shapeকল করা যায় না। এটা ঠিক একটি সমতল tuple। দুর্ভাগ্যক্রমে, এটি 3 বা 2 উপাদান দীর্ঘ হতে পারে।
টমাসজ গ্যান্ডার

উত্তর:


218

cv2ব্যবহারসমূহ numpyসাধিত ইমেজ জন্য, তাই সঠিক এবং সবচেয়ে ভালো উপায় একটি ইমেজ আকার ব্যবহার করছে পেতে numpy.shape। ধরে নিই যে আপনি বিজিআর চিত্র নিয়ে কাজ করছেন, এখানে একটি উদাহরণ রয়েছে:

>>> import numpy as np
>>> import cv2
>>> img = cv2.imread('foo.jpg')
>>> height, width, channels = img.shape
>>> print height, width, channels
  600 800 3

আপনি যদি বাইনারি চিত্রগুলির সাথে কাজ করে থাকেন তবে imgতার দুটি মাত্রা থাকবে এবং তাই আপনাকে অবশ্যই কোডটি এতে পরিবর্তন করতে হবে:height, width = img.shape


24
উহু চলো. চিত্রটি বিজিআর বা মনো হবে তা ধরে নেওয়ার পরিবর্তে, কেবল সাধারণত লিখুন - h, w = img.shape[:2]বিশেষত ওপি গভীরতার বিষয়ে আগ্রহী নয়। (আমিও ছিলাম না). আরও তথ্যের জন্য আমার উত্তর দেখুন।
টমাসজ গ্যান্ডার

4
আমি এই সহায়কটি
৩.০-

19

আমি আশঙ্কা করছি এই আকারটি পাওয়ার কোনও "আরও ভাল" উপায় নেই, তবে এটি এতটা ব্যথা নয়।

অবশ্যই আপনার কোড বাইনারি / মনো ইমেজ পাশাপাশি মাল্টি-চ্যানেল উভয়ের জন্যই নিরাপদ হওয়া উচিত, তবে চিত্রটির মূল মাত্রাগুলি সবসময় অদ্ভুত অ্যারের আকারে প্রথম আসে। আপনি যদি পঠনযোগ্যতার পক্ষে বাছাই করে থাকেন বা এটিকে টাইপ করতে বিরক্ত করতে না চান তবে আপনি এটিকে কোনও ফাংশনে গুটিয়ে রাখতে পারেন এবং নিজের পছন্দ মতো একটি নাম দিতে পারেন cv_size:

import numpy as np
import cv2

# ...

def cv_size(img):
    return tuple(img.shape[1::-1])

আপনি যদি টার্মিনাল / আইপথনে থাকেন তবে আপনি এটি ল্যাম্বডা দিয়েও প্রকাশ করতে পারেন:

>>> cv_size = lambda img: tuple(img.shape[1::-1])
>>> cv_size(img)
(640, 480)

defইন্টারেক্টিভভাবে কাজ করার সাথে সাথে ফাংশনগুলি লেখা মজাদার নয়।

সম্পাদনা করুন

মূলত আমি ভেবেছিলাম [:2]ব্যবহারটি ঠিক আছে, তবে অদ্ভুত আকারটি (height, width[, depth]), এবং আমাদের (width, height)যেমন প্রয়োজন যেমন cv2.resizeপ্রত্যাশা করা হয়, তাই - আমাদের অবশ্যই ব্যবহার করা উচিত [1::-1]। এর চেয়ে কম স্মরণীয়ও [:2]। এবং যেভাবে যাইহোক বিপরীত কাটা মনে আছে?


4
সম্ভবত img.shape[:2][::-1]
মারাত্মকভাবে

15
আপনার সূচক বন্ধনীগুলিতে কলোনগুলির প্রেমে থাকতে আপনার কোনও কারণ নেই। রিটার্ন (ইমেজ.শ্যাপ [১], ইমেজ.শ্যাপ [০]) উভয় সংক্ষিপ্ত এবং পঠনযোগ্য।
এমসিডুফি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.