আলোকসজ্জার শর্ত বুঝতে এবং স্ক্রিনের উজ্জ্বলতা সামঞ্জস্য করতে ওয়েবক্যাম ব্যবহার করুন


31

আমার ওয়েবক্যাম জ্ঞানের আলোকসজ্জার শর্ত রয়েছে এবং সেই অনুসারে স্ক্রিনের উজ্জ্বলতা সামঞ্জস্য করার কোনও উপায় আছে কি?

উত্তর:


11

আমি আমার আগের প্রয়াসে উন্নতি করেছি :

import opencv
import opencv.highgui
import time
import commands


def get_image():
    image = opencv.highgui.cvQueryFrame(camera)
    return opencv.adaptors.Ipl2PIL(image)

camera = opencv.highgui.cvCreateCameraCapture(-1)

while 1:
    image = get_image()
    image.thumbnail((32, 24, ))
    image = tuple(ord(i) for i in image.tostring())
    x = int((int((max(image) / 256.0) * 10) + 1) ** 0.5 / 3 * 10)
    cmd = ("sudo su -c 'echo " + str(x) +
        " > /sys/devices/virtual/backlight/acpi_video0/brightness'")
    status, output = commands.getstatusoutput(cmd)
    assert status is 0

এই পদ্ধতির সাথে দুটি সমস্যা: কমপক্ষে আমার ওয়েব ক্যামের সাথে ডিসপ্লের উজ্জ্বলতা কখনই চারটির চেয়ে কম যায় না, কারণ ক্যামেরা অন্ধকারে ভাল কাজ করে না এবং এটি চার থেকে পাঁচ এর মধ্যে কিছুটা এড়িয়ে যেতে পারে। যাই হোক,

এটি এটি কীভাবে ব্যবহার করবেন:

  1. sudo apt-get install python-opencv
  2. এই স্ক্রিপ্টটি কোথাও সংরক্ষণ করুন, বলুন ~/test.py
  3. এটি দিয়ে চালান python test.py

গড় উজ্জ্বলতার পরিবর্তে, আমি এখন একটি ছোট টম্বনাইলের সর্বাধিক উজ্জ্বলতা পাচ্ছি (এটি হ'ল পিক্সেলের সমস্যাগুলি এড়াতে এবং দ্রুততর করা)। এবং অন্তত আমার লাইট এবং ক্যামেরার সংমিশ্রণের সাথে এটি বরং ভালভাবে কাজ করে!

একবার চেষ্টা করে দেখো (:


1
নোট করুন যে এটি একটি খুব সরল পদ্ধতি। পিক্সেলের গাণিতিক গড়ের পরিবর্তে চিত্রের একটি ভারী কালো এবং সাদা হিস্টোগ্রাম পাওয়া খুব সহজ হবে (লাল এবং নীল রঙের একই উজ্জ্বলতা নেই)। এছাড়াও, আপনি একটি ন্যূনতম, সর্বাধিক সেট করতে পারেন এবং এটি কেবলমাত্র একটি নির্দিষ্ট স্তরের আত্মবিশ্বাসের পরে পরিবর্তিত হয়েছে যা পরিবেষ্টিত আলো পরিবর্তিত হয়েছে। তবে আমি উল্লিখিত বিষয়গুলির কারণে আমি বিরক্ত হইনি। এটির মতো একই সমস্যা হবে।
স্টেফানো মধ্যে Palazzo

1
হুম, আপনার কথায় এটি ভাল কাজ করে। :)
zpletan

@ zpletan এটিকে আবার যেতে দিন; আমি শুরু থেকে শুরু করেছি।
স্টেফানো প্যালাজো

1
এটি আমার যেভাবে চাইছে তা নিয়ে কাজ করে বলে মনে হচ্ছে। ধন্যবাদ! (এবং উত্তর এতক্ষণ করার জন্য দুঃখিত।)
zpletan

1
স্ট্যাকওভারফ্লো / প্রশ্নগুলি / 30684661/highguiথেকে নেই । অন্য কোন উপায আছে কি?
দানিয়াল

2

রেডশিফ্ট প্রকল্পটি দেখুন, যা আপনার ভৌগলিক অবস্থানের উপর ভিত্তি করে স্ক্রিনের তাপমাত্রাকে পরিবর্তিত করে যা এফ.লাক্স আগে করছিল।

http://jonls.dk/redshift/

ওয়েবসাইটে ইনস্টল করা এবং কীভাবে ব্যবহার করতে হয় তার নির্দেশাবলী ভালভাবে ডকুমেন্টেড রয়েছে এবং আপনার হার্ডওয়্যার এবং মনিটরের উপর নির্ভর করে আপনি রেডশিফ্ট দ্বারা প্রাপ্ত দুর্দান্ত প্রভাব দ্বারা আপনার চোখকে "রিফ্রেশ" করার মতো অনুভব করতে পারেন।


1
আমি মনে করি না এটি এই প্রশ্নের উত্তর দেয়, সম্ভবত আপনার উত্তরটি মুছে ফেলা উচিত এবং পরিবর্তে এটি মূল প্রশ্নের উপর একটি মন্তব্য করা উচিত। উত্তরগুলি সর্বদা সরাসরি প্রশ্নের উত্তর দেওয়া উচিত।
স্টেফানো প্যালাজো

আপনার লিঙ্ক কাজ করে না।
থেক্সড

1
মনে হচ্ছে এটি কি আপনার পারিপার্শ্বিকতাটিকে বিবেচনায় নেয় না? তাই যদি আমি দিনের মাঝামাঝি একটি অন্ধকার ঘরে থাকি তবে এটি কিছুই করবে না?
zpletan

@ জপলেটান হ্যাঁ, এটি সূর্যের অবস্থান অনুসারে শুধুমাত্র রঙ পরিবর্তন করে।
স্টেফানো মধ্যে Palazzo

এই দিকে লিঙ্কটি সমস্যা ছাড়াই কাজ করে বলে মনে হচ্ছে। স্টেফানো প্যালাজো, দুঃখিত যদি আপনি আমার উত্তরটি কার্যকর না খুঁজে পান। তবে আমি মনে করি আপনি উত্তরটি রাখলে অন্য কারও পক্ষে এটি দরকারী find তোমার পছন্দ. আপনি মুছে ফেলার অনুরোধ করতে ভোট দিতে পারেন। :) ধন্যবাদ.
Geppettvs D'Constanzo

2

পিপিএ যুক্ত করতে, টার্মিনালটি খোলার জন্য কীবোর্ডে Ctrl+ Alt+ টিপুন T। এটি খুললে নীচের কমান্ডটি চালান:

sudo add-apt-repository ppa:fantasyleague0629/wildguppy

তারপরে ওয়াইল্ডগাপি ইনস্টল করুন:

sudo apt-get update; sudo apt-get install wildguppy

উবুন্টু 14.04, উবুন্টু 13.10, উবুন্টু 13.04, উবুন্টু 12.10 এবং উবুন্টু 12.04 এ কাজ করে।

ওয়াইল্ডগাপিকে শুরুতে চালিয়ে যান:

কনফিগার ফাইল সম্পাদনা করার জন্য রান কমান্ড।

sudo gedit ~/.config/autostart/wildguppy-gtk.desktop

জিজ্ঞাসা করা হলে আপনার পাসওয়ার্ডটি টাইপ করুন। নোট করুন যে টার্মিনাল টাইপ করার সময় আপনার পাসওয়ার্ড প্রদর্শন করবে না, কেবল মনের মধ্যে টাইপ করুন এবং এন্টার টিপুন।

ফাইলটি খুললে, সামগ্রীর নীচে পেস্ট করুন এবং এটি সংরক্ষণ করুন।

[Desktop Entry]
Type=Application
Exec=wildguppy-gtk
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_US]=WildGuppy
Name=WildGuppy
Comment[en_US]=
Comment=

আরে, উত্তরের জন্য ধন্যবাদ! আমি দিনের বেলা ঠিক এটিই খুঁজছিলাম, তবে দুর্ভাগ্যক্রমে আমি উবুন্টুকে আর ব্যবহার করি না এবং পরীক্ষার কোনও উপায় নেই (যদিও আমি জানি না কেন এটি কাজ করবে না )। যেমনটি, আমি অন্য উত্তরের উত্তর স্থিতিটি অপসারণ করতে স্বাচ্ছন্দ্য বোধ করি না তবে আশা করি অন্যরাও এটি দরকারী বলে মনে করছেন এবং তা যদি দ্রুত হয় তবে শীর্ষে ভোট দেওয়া হবে। চিয়ার্স!
zpletan

@zpletan ওয়েলকম, আপনি যখন এই প্যাকেজটি ইনস্টল করবেন, আপনি অবস্থিত পাইথন স্ক্রিপ্টটি চালাতে পারেন /opt/wildguppy/wildguppy.py। সুতরাং আপনি এই প্যাকেজটি কোনও ডিস্ট্রোতে ব্যবহার করতে পারেন! চিয়ার্স!
দানিয়াল

@zpletan আমি উজ্জ্বলতায় দ্রুত এবং আকস্মিক পরিবর্তনগুলি রোধ করতে গড় .জ্জ্বল্য গণনা করতেও কিছু পরিবর্তন করেছি। github.com/Daniyal-Javani/autobrightness/blob/master/...
Daniyal

0

আমি ওপেনসিভি ব্যবহার করে সেটির জন্য একটি সি সরঞ্জামও তৈরি করেছিলাম। আপনি এটি https://launchpad.net/brightness এ খুঁজে পেতে পারেন (আপনার নিজের দ্বারা এটি সংকলন করতে হবে)। আমি আশা করি এটা তোমাকে সাহায্য করবে।


আমি এটি সংকলিত পেয়েছি, তবে আমি কীভাবে এটি ব্যবহার করব?
zpletan


0

এটি আমার পক্ষে কাজ করে:

#!/usr/bin/env python3

import subprocess, time


# webcam brightness if webcam doesn’t get any light
blackpoint = 0.05

# webcam brightness if webcam is fully exposed (e.g. sun at noon)
whitepoint = 0.92549

# Path to program that sets screen brightness.  Takes float between 0 and 1 as
# a parameter.  Should be whitelisted for sudo if this script is not run as
# root.  Sample script:
#
# #!/bin/sh
# echo "($1 * 4882) / 1" | bc > /sys/class/backlight/intel_backlight/brightness
brightness_setter = "/home/bronger/bin/set_brightness.sh"

# it doen’t get any darker
minimal_brightness = 0.1

# in seconds
sleeping_time = 20


def get_brightness():
    """Returns webcam brightness as a float between 0 and 1 (boundaries
    included)."""
    fswebcam = subprocess.Popen(["fswebcam", "-q", "--no-banner", "--png", "0", "-"], stdout=subprocess.PIPE)
    convert = subprocess.run(["convert", "png:-", "-colorspace", "gray", "-scale", "10%x10%",
                              "-format", "%[fx:image.maxima]", "info:"],
                             check=True, stdin=fswebcam.stdout, capture_output=True, text=True)
    assert fswebcam.wait() == 0
    brightness = float(convert.stdout)
    brightness = (brightness - blackpoint) / (whitepoint - blackpoint)
    brightness = max(0.0, min(1.0, brightness))
    return brightness


old_brightness = None
while True:
    brightness = get_brightness() ** 2
    brightness = max(minimal_brightness, brightness)
    if old_brightness is None or abs(brightness - old_brightness) > 0.2:
        subprocess.run(["sudo", brightness_setter, str(brightness)], check=True)
        old_brightness = brightness
    time.sleep(sleeping_time)

0

আমি একটি সি অ্যাপ তৈরি করেছি যা এটি করে। Https://github.com/goglecm/ অটোবাইটনেস ক্যাম দেখুন ।

এটি fswebcamছবি তোলার জন্য ব্যবহার করে, systemdস্বয়ংক্রিয়ভাবে শুরু করতে কনফিগার করা যায় এবং ল্যাপটপটি স্রাব হচ্ছে কিনা তা সনাক্ত করে (তারপরে এটি কিক্স করে)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.