/ / ओपनव्व (ओपेंशन, फ़्रीक्वेंसी, फेज़-शिफ्ट, एम्प्लिट्यूड) द्वारा दर्शाई गई वेव को ड्रा करना OpenCv का उपयोग करना - opencv, c ++ 11, visual-c ++, opencv3.0

ओपनसीवी - ओपनसीवी, सी ++ 11, विज़ुअल-सी ++, ओपनसीवी 3.0 का उपयोग करके (ओरिएंटेशन, फ़्रिक्वेंसी, फेज-शिफ्ट, आयाम) द्वारा प्रदर्शित एक वेव ड्राइंग

मैं एक खाली छवि बनाना चाहता हूं और उपयोगकर्ता से पैरामीटर लेना चाहता हूं, जो वेव ओरिएंटेशन, वेव फ्रिक्वेंसी, फेज-शिफ्ट, वेव एम्प्लिट्यूड हैं।

और मुझे निम्न चित्र के समान आउटपुट देना होगा:

यहां छवि विवरण दर्ज करें

मेरे सवाल:

  • मैं अपनी खाली छवि के अंदर लहरें कैसे खींच सकता हूं?
  • मुझे किन कार्यों का उपयोग करना चाहिए?

उत्तर:

जवाब के लिए 0 № 1

मुझे लगता है कि आप निम्नलिखित कदम कर सकते हैं (लेकिन मुझे यकीन नहीं है, क्योंकि मैंने इसे "परीक्षण नहीं किया है"):

  1. एक पंक्ति में पिक्सेल के मूल्यों की गणना करने के लिए आवश्यक वेव फ्रीक्वेंसी, फेज-शिफ्ट और वेव एम्प्लिट्यूड के साथ साइन फ़ंक्शन का उपयोग करें। संभवतः यह साइन और सामान्यीकरण का उपयोग करके ऐसा दिखेगा:

    for( int j = 0; j < I.cols; ++j ) I.at<uchar>(i,j) = (Amplitude * sin(frequency*j + PhaseShift) + 1) / 2 * 255;

  2. ऊर्ध्वाधर पंक्तियों की तरह कुछ प्राप्त करने के लिए दूसरी पंक्तियों में पहली पंक्ति की प्रतिलिपि बनाएँ।

  3. उपयोग cv::getRotationMatrix2D तथा cv::warpAffine आवश्यक तरंग अभिविन्यास प्राप्त करने के लिए।